Tengo un archivo para el que quiero reemplazar el carácter \n
de nueva línea por un espacio en blanco. He probado lo siguiente con sed
pero no me funciona:
sed 's#\n# #g' archivo sed 's#^$# #g' archivo
Estás leyendo una traducción autorizada de la pregunta
Delete a line containing a specific string using sed
planteada por A Clockwork Orange
en StackOverflow.
Respuestas
Esta es una posible solución a este problema:
sed ':a;N;$!ba;s/\n/ /g'
El comando anterior lee todo el archivo y después reemplaza las nuevas líneas por espacios en blanco.
La explicación detallada del comando es la siguiente:
- Se crea una etiqueta mediante
:a
- Se incluye la línea actual y la siguiente al patrón mediante
N
- Si nos encontramos antes de la última línea, nos pasamos a la etiqueta creada anteriormente
$!ba
($!
significa que no hacemos esto en la última línea del archivo, ya que debería haber una línea de final de archivo en esa última línea). - Por último, se sustituyen todas las nuevas líneas
\n
por un espacio en blanco.

@librosweb
4 octubre 2014, 22:14