Para modificar el intento de OP
$ cat ip.txt
214 4234-5555
foo 123 4533-3242
$ sed -r 's/([0-9])([0-9])([0-9])/\3\2\1/' ip.txt
412 4234-5555
foo 321 4533-3242
$ # adding parenthesis as well
$ sed -r 's/([0-9])([0-9])([0-9])/(\3\2\1)/' ip.txt
(412) 4234-5555
foo (321) 4533-3242
$ # if ERE is not supported
$ sed 's/\([0-9]\)\([0-9]\)\([0-9]\)/(\3\2\1)/' ip.txt
(412) 4234-5555
foo (321) 4533-3242
sed
necesitaría -E
en lugar de-r
([0-9]), ([0-9]), ([0-9])
significa hacer coincidir 3 dígitos separados por coma y espacio g
si se deben cambiar todas las coincidencias en una línea
Para una solución genérica, es decir, definir el número de dígitos a invertir como un 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
cd
обычно является встроенной оболочкой. Таким образом, поведение будет зависеть от оболочки, версии оболочки и, возможно, используемой ОС. Например, в Bash
по Debian 9
я получаю следующее:
bash: cd: too many arguments
Это связано с тем, что *
сначала интерпретируется с использованием globbing
, а затем в каталоге, который я использовал, когда пробовал это, было слишком много каталогов и файлов.
Однако, если бы у меня был только один каталог с именем folder
в текущем каталоге, оболочка glob
переместила бы его в:
cd folder
Это завершится успешно и изменится на folder
.