Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

¿Cómo puedo reemplazar el carácter \n de nueva línea por un espacio con el comando "sed"?

9 de agosto de 2011

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

#1

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:

  1. Se crea una etiqueta mediante :a
  2. Se incluye la línea actual y la siguiente al patrón mediante N
  3. 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).
  4. Por último, se sustituyen todas las nuevas líneas \n por un espacio en blanco.

@librosweb

4 octubre 2014, 22:14