Подсчитайте количество вхождений каждой группы чисел в строке [дубликат]

No es la impresión, es la sustitución del comando lo que hace eso. Está definido para hacer eso. De la descripción POSIX :

The shell shall expand the command substitution by executing command in a subshell environment and replacing the command substitution with the standard output of the command, removing sequences of one or more {newline} characters at the end of the substitution.

Tenga en cuenta que elimina todos los saltos de línea finales, no solo uno.

En un caso algo común, usaría la sustitución de comandos para capturar una salida de una -línea, digamos osrev=$(uname -r). Las utilidades generalmente imprimen una nueva línea final, para comodidad del usuario en la línea de comando. Pero en un script de shell, es posible que desee usar esa cadena como parte de otra, digamos un nombre de archivo:filename=blahblah-$osrev.dat. Y en ese caso, la nueva línea final solo sería una molestia.

Y, por supuesto, una simple echoagregará una nueva línea final en cualquier caso.


Si desea el contenido del archivo como -está en la variable, entonces la solución común es agregar un carácter adicional en la sustitución del comando y eliminarlo más tarde:

printf "foo\nbar\n\n" > file
string=$(cat file; echo x)
string=${string%x}
printf '%q\n' "$string"

que genera $'foo\nbar\n\n', mostrando las dos nuevas líneas finales presentes.


Dependiendo de lo que pretenda hacer con los datos, puede haber otras formas. P.ej. un bucle while read, o el mapfilede Bash, si desea procesar el archivo línea -por línea -.

1
23.07.2019, 13:58
1 ответ

Вы можете сделать это на языке Perl -, как показано:

$ perl -lpe '$_ = s/\d+//g'
  2
1
27.01.2020, 23:41

Теги

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