jueves, 25 de abril de 2013

Eliminar lineas de texto vacias por consola de comandos

Siguiendo un poco con el tema de este post anterior y porque me encontré algo relacionado aquí les dejo este post donde doy algunos consejos para eliminar líneas vacias

Asumamos que tenemos el mismo archivo de ejemplo de mi post anterior llamado dias.txt pero le agregaré unas cuantas líneas en blanco para poder que quede como sigue a continuación:

Lun

Mar

Mie

Jue

Vie

Sab

Dom

Pueden usar cualquiera de los siguientes comandos para borrar todas las líneas vacías del archivo dias.txt: sed, awk o perl
El resultado seria algo como lo siguiente:
Lun
Mar
Mie
Jue
Vie
Sab
Dom

Recuerden que pueden imprimir en pantalla el contenido de dias.txt usando el comando
cat dias.txt
  • Gnu/sed: Usando una regex le indicamos a sed que borre las líneas que no tienen nada entre el principio(^) y el fin($) de dicha linea
    podemos escribir el contenido de dias.txt modificado en otro archivo (dias2.txt):
    sed '/^$/d' dias.txt > dias2.txt
    #cat dias2.txt
    O bien podemos modificar dias.txt directamente
    sed -i '/^$/d' dias.txt
    #cat dias.txt
    
  • awk: Usando awk el comando sería
    awk 'NF > 0' dias.txt > dias2.txt
    #cat dias2.txt
    
  • perl: El siguiente comando usando perl, borra todas las líneas bacias y guarda el archivo original como dias.txt.bakup, muy practico para evitar perder el archivo original si algo sale mal
    perl -i.backup -n -e "print if /\S/" input.txt
    #cat dias.txt
    #cat dias.txt.backup
    
Espero que les sea de ayuda :D
Hasta la próxima.