UNIX: utilizando tr para eliminar líneas vacías
He visto que se hace usando sed (si fueras tan amable de escribir cómo hacerlo con sed y explicar la expresión regular detrás de eso, también lo agradecería), pero me gustaría saber cómo hacerlo usando tr.
Mi idea era: cat archivo | tr -d ^'\\n'
o ^\\n
, pero el primero eliminó cada ‘\n’, el segundo ninguno.
davy.ai
Para eliminar todos los caracteres de salto de línea en un archivo usando tr, puedes usar el siguiente comando:
Esto tomará el contenido del archivo de entrada y eliminará todos los caracteres de salto de línea, escribiendo el resultado en el archivo de salida.
La bandera
-d
especifica que queremos eliminar caracteres en lugar de traducirlos, y'\n'
es el carácter que queremos eliminar.Usando sed, puedes lograr el mismo resultado con el siguiente comando:
Este comando lee todo el archivo en el espacio de patrón (el búfer que sed utiliza para el procesamiento) y luego usa el comando
s
con una bandera de sustitución global (g
) para reemplazar todos los caracteres de salto de línea (\n
) por nada, eliminándolos efectivamente.La parte
:a;N;$!ba;
del comando es un guion de sed que lee todo el archivo en el espacio de patrón. Funciona de la siguiente manera::a
crea una etiqueta “a”N
lee la siguiente línea de entrada y la concatena al espacio de patrón$!
significa “no es la última línea” (así que si no estamos en la última línea, ejecutamos el siguiente comando)ba
significa “salta a la etiqueta a”$!ba
significa “si no estamos en la última línea, salta a la etiqueta a”Entonces, este guion lee todo el archivo (todas las líneas se añaden al espacio de patrón) y luego el comando
s
elimina todos los caracteres de salto de línea.