Каков результат cd * [closed]

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
  • Tenga en cuenta que alguna implementación sednecesitaría -Een lugar de-r
  • Use comillas simples a menos que necesite interpolación, vea tambiénhttps://mywiki.wooledge.org/Quotes
  • ([0-9]), ([0-9]), ([0-9])significa hacer coincidir 3 dígitos separados por coma y espacio
  • Se necesita el modificador
  • gsi 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

-4
20.01.2019, 18:18
1 ответ

cd обычно является встроенной оболочкой. Таким образом, поведение будет зависеть от оболочки, версии оболочки и, возможно, используемой ОС. Например, в Bashпо Debian 9я получаю следующее:

bash: cd: too many arguments

Это связано с тем, что *сначала интерпретируется с использованием globbing, а затем в каталоге, который я использовал, когда пробовал это, было слишком много каталогов и файлов.

Однако, если бы у меня был только один каталог с именем folderв текущем каталоге, оболочка globпереместила бы его в:

cd folder

Это завершится успешно и изменится на folder.

5
28.01.2020, 05:20

Теги

Похожие вопросы