Sed command to reverse the order of three digits in area code

Consider the following file called phone.txt: containing some DDD area phone numbers, except that the area code (i.e., the first three digits) are backwards and do not include the parentheses around the area code as follows:

phone.txt
279 680-0035
412 328-2197
964 432-8492
718 780-4972

Write a one-line sed command that reverses the order of the three digits in the area code and adds the needed parentheses around the area code so that after running the appropriate sed command, the following would be output to the terminal:

(972) 680-0035
(214) 328-2197
(469) 432-8492
(817) 780-4972

For reversing the order, I will use substring and obtain all the first three digits as a substring so that I can refer them later as \1, \2 and \3.

$sed 's/\([0-9]\)\([0-9]\)\([0-9]\) \([0-9][0-9][0-9]\)-\([0-9][0-9][0-9][0-9]\)/(\3\2\1) \4-\5/' phone.txt

Recommended Posts