Para modificar a tentativa do OP
$ cat ip.txt
214 4234-5555
foo 123 4533-3242
$ sed -r 's/([0-9])([0-9])([0-9])//' ip.txt
412 4234-5555
foo 321 4533-3242
$ # adding parenthesis as well
$ sed -r 's/([0-9])([0-9])([0-9])/()/' ip.txt
(412) 4234-5555
foo (321) 4533-3242
$ # if ERE is not supported
$ sed 's/\([0-9]\)\([0-9]\)\([0-9]\)/()/' ip.txt
(412) 4234-5555
foo (321) 4533-3242
- Observe que a implementação de
sed
precisaria de-E
em vez de-r
- Use aspas simples, a menos que você precise de interpolação. Consulte também link
-
([0-9]), ([0-9]), ([0-9])
significa corresponder 3 dígitos separados por vírgula e espaço -
g
modifier é necessário se todas as correspondências em uma linha forem alteradas
Para uma solução genérica, ou seja, definindo o número de dígitos para reverter como um argumento numérico
$ perl -pe 's/\d{3}/reverse $&/e' ip.txt
412 4234-5555
foo 321 4533-3242
$ perl -pe 's/\d{3}/sprintf "(%s)", scalar reverse $&/e' ip.txt
(412) 4234-5555
foo (321) 4533-3242