Reemplace todas las líneas nuevas al espacio excepto el último


Respuestas:


42

Puedes usar paste -s -d ' ' file.txt:

$ cat file.txt
one line
another line
third line
fourth line

$ paste -s -d ' ' file.txt 
one line another line third line fourth line

1
¡Guay! Las opciones -sy -dparecen estar hechas para este caso.
mkc

10

Puede usar trpara reemplazar todas las nuevas líneas al espacio y pasar la salida sedy reemplazar el último espacio a una nueva línea:

tr '\n' ' ' < afile.txt | sed '$s/ $/\n/'

5

Vuelva a implementar la idea de vonbrand en Perl, siempre que el archivo sea lo suficientemente pequeño:

perl -p00e 's/\n(?!\Z)/ /g' your_file

+1 porque este método funciona para reemplazos con caracteres multibyte (en oposición a GNU paste)
myrdd


-1

Esto funcionó para mí.

tr '\n' ' ' < file_with_new_line   | sed 's/\ $//g' > file_with_space

Eso eliminará la última línea nueva también.
terdon

No lo creo, está funcionando bien. ¿Realmente lo has probado?
Abhijit

Sí tengo. ¿Tienes? Su trcomando reemplaza todas las líneas nuevas con espacios y su sedcomando elimina el último espacio. Esto da como resultado un archivo sin una nueva línea final y, por lo tanto, no es lo que la pregunta está pidiendo. Por cierto, no tiene sentido usarg en el sedcomando. Como estás usando $, solo puede coincidir al final, no gtiene sentido. Tampoco necesita escapar del espacio, el `` tampoco hace diferencia.
terdon
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.