linux - tag - musicbrainz picard
¿Cómo concatenar múltiples líneas de salida a una línea? (6)
Aquí está el método que usa el editor ex
:
J oin todas las líneas y p rint a la salida estándar:
$ ex +%j +%p -scq! file
J oin todas las líneas en el lugar (en el archivo):
$ ex +%j -scwq file
Nota: ¡Esto concatenará todas las líneas dentro del archivo en sí mismo!
Si ejecuto el comando cat file | grep pattern
cat file | grep pattern
, obtengo muchas líneas de salida. ¿Cómo se concatenan todas las líneas en una línea, reemplazando efectivamente cada "/n"
con "/" "
(final con "
seguido de espacio ")?
cat file | grep pattern | xargs sed s//n/ /g
cat file | grep pattern | xargs sed s//n/ /g
no funciona para mí.
En bash echo sin comillas, eliminar devoluciones de carro, pestañas y espacios múltiples
echo $(cat file)
Esto podría ser lo que quieras
cat file | grep pattern | paste -sd'' ''
En cuanto a su edición, no estoy seguro de lo que significa, ¿quizás esto?
cat file | grep pattern | paste -sd''~'' | sed -e ''s/~/" "/g''
(Esto supone que ~
no ocurre en el file
)
La salida de tubería a xargs
concatenará cada línea de salida a una sola línea con espacios:
grep pattern file | xargs
O cualquier comando, ej. ls | xargs
ls | xargs
. El límite predeterminado de la salida xargs
es ~ 4096 caracteres, pero se puede aumentar con, por ejemplo. xargs -s 8192
.
grep xargs
Probablemente la mejor manera de hacerlo es usando la herramienta ''awk'' que generará salida en una línea
$ awk '' /pattern/ {print}'' ORS='' '' /path/to/file
Combinará todas las líneas en una con delimitador de espacio
Use tr ''/n'' '' ''
para traducir todos los caracteres de nueva línea a espacios:
$ grep pattern file | tr ''/n'' '' ''
Nota: grep
lee archivos, cat
concatena archivos. No cat file | grep
cat file | grep
!
Editar:
tr
solo puede manejar traducciones de un solo caracter. Puede usar awk
para cambiar el separador de registros de salida como:
$ grep pattern file | awk ''{print}'' ORS=''" ''
Esto transformaría:
one
two
three
a:
one" two" three"