eliminar lineas en blanco script linux

Cómo eliminar líneas en blanco mediante un script GNU/Linux

Compartir

Acompáñanos a lo largo de este breve artículo donde descubriremos cómo eliminar líneas en blanco mediante un script GNU/Linux.

AWK es uno de los lenguajes de programación más usados en el mundo UNIX para el procesamiento de texto, y es uno de los recursos obligatorios que se deben dominar cuando se está dentro de este mundo.

El nombre está compuesto por las iniciales de sus creadores, que sin duda conocerás de otros proyectos, al menos si estás familiarizado con el mundo UNIX y el del software libre:

  • A: Alfred Aho.
  • W: Peter Weinberger.
  • K: Brian Kernighan.

AWK se suele usar junto a SED, un editor de línea de comandos que recibe su nombre de su capacidad de trabajar como editor en línea, ya que sería su traducción directa al inglés “stream editor”.

SED permite realizar operaciones de edición con datos extraídos de archivos o desde la entrada de datos estándar (standard input o stin). Otro de los puntos a destacar es que se trabaja en modo no interactivo.

La potencia de ambas herramientas se multiplica cuando se usan ambas en conjunción, ya que

Como curiosidad, AWK y SED son la fuente original de inspiración para la creación de uno de los lenguajes de scripting más potentes y ampliamente usados: Perl, ya que Larry Wall se fundamentó en estos para la creación de su potente lenguaje de programación, del que me declaro acérrimo fan, aunque he de reconocer que un fan bastante torpe.

Para encontrar el número de líneas en blanco en un archivo, usa el siguiente comando:

# cat <fichero_origen> |awk ‘/^$/ { ++x } END { print «Numero de lineas en blanco = » x }’

Donde:

  • Cat: es el comando usado para mostrar el contenido de un fichero de manera concatenada, o sea, de principio a fin del archivo, sin detenerse en ningún momento. Si se quiere poder ir paso a paso, viendo el contenido por páginas, se deberán usar alternativas como el comando “more” o “less”.
  • <fichero_origen>: representa al fichero de texto a revisar, este será básicamente la entrada del comando.
  • |: Es la tubería (pipe) usada para pasar la salida de un comando a la entrada del siguiente.
  • awk:
  • /^$/ { ++x }: Representa un contador en el que cada vez que se encuentra una línea vacía representada por /^$/ se suma uno { ++x }.
  • { print «Numero de líneas en blanco = » x }: Imprime por pantalla (salida estándar o stout) el mensaje “Numero de líneas en blanco” junto con el número contacto por el comando y representado aquí por la variable “x”.

Un ejemplo de esta ejecución podría ser:

# cat ficheroprueba.txt |awk ‘/^$/ { ++x } END { print «Numero de lineas en blanco = » x }’

Tal como podemos ver en la siguiente captura.

Imagen. Ejecución del oneline para contar líneas en blanco mediante script Linux
Imagen. Ejecución del oneline para contar líneas en blanco mediante script Linux

Con esto ya tendríamos claro el número de líneas en blanco, que lo podríamos confrontar con el número total de líneas para saber que porcentaje del fichero está poblado y que porcentaje no, para extraer diversas conclusiones y poder tratarlo de múltiples formas.

Una de las formas en que podríamos tratarlo es limpiando las líneas en blanco mediante el uso de AWK, así seguimos usando la misma herramienta que antes y no introducimos complejidad adicional.

La forma de usar este comando es muy sencilla, a la par que “ingeniosa”; y es usando el reenvío de aquellas líneas que contengan algún contenido, purgando aquellas que no tengan contenido, usando para ello el modificador “NF”.

Esto se usaría de la siguiente manera:

# awk ‘NF’ <fichero_origen> > <fichero_destino>

Donde:

  • ‘NF’: Tomamos solo las líneas que tienen contenido.
  • >: Reenvía la salida del comando al archivo “ficherosalida.txt”.

Un ejemplo de esto sería:

# awk ‘NF’ ficheroprueba.txt > ficherosalida.txt

Imagen. Ejecutamos la limpieza de líneas en blanco dentro de un fichero mediante script Linux AWK
Imagen. Ejecutamos la limpieza de líneas en blanco dentro de un fichero mediante script Linux AWK

Si queremos buscar más opciones, podríamos usar también el comando SED que es otro de los viejos conocidos de administradores de GNU/Linux y UNIX.
En este caso se puede ejecutar el siguiente comando:

# sed ‘/^$/d’ <fichero_origen> > <fichero_destino>

Donde:

  • ‘/^$/d’: Busca las líneas en blanco y las elimina.
  • >: Hace el reenvío de la salida del primer comando al archivo “ficherocambiado.txt”, escribiendo el contenido dentro de este.

Siendo un ejemplo:

# sed ‘/^$/d’ ficheroprueba.txt > ficherocambiado.txt

Como curiosidad, si retiráramos el reenvío a otro archivo, lo que sucedería es que se mostraría el fichero sin los espacios en blanco, pero el fichero seguiría intacto.

Para ello deberíamos lanzar el siguiente comando:

# sed ‘/^$/d’ <fichero_origen>

Siendo el ejemplo:

# sed ‘/^$/d’ ficheroprueba.txt

Imagen. Ejecutamos la limpieza de líneas en blanco dentro de un fichero mediante script Linux SED
Imagen. Ejecutamos la limpieza de líneas en blanco dentro de un fichero mediante script Linux SED

Y con esto ya podemos decir que hemos repasado este tema más o menos en profundidad.

 

Conclusiones:

Como puedes ver en el artículo cómo eliminar líneas en blanco mediante un script GNU/Linux, con un par de comandos enlazados y reconducidos se puede obtener el número de líneas en blanco que se tiene en un fichero, que puede ser una información muy útil cuando operamos con ficheros de configuración.

La ejecución es sencilla y debería estar soportada por todos los sistemas GNU/Linux ya que se realiza mediante AWK, una herramienta ampliamente difundida dentro de los sistemas GNU/Linux y UNIX, pero si encontraras algún problema en su ejecución puedes contactar con nosotros para que intentemos echarte una mano.

Asimismo, recuerda que tienes nuestros tutoriales disponibles para tu consulta en el blog de Jotelulu.

¡Gracias por leernos!

Categorías:Cloud y sistemas

Otros posts que te pueden interesar

23 de abril de 2024
Acompáñanos en este artículo en el que trataremos de ver cómo evaluar riesgos y amenazas en la pyme. Uno
20 de febrero de 2024
Acompáñanos en este artículo en el que trataremos uno de esos “pains” a los que se enfrenta toda pyme,
15 de febrero de 2024
Acompáñanos y descubre qué es y por qué necesitamos Disaster Recovery. La creciente dependencia de todas las organizaciones de

Rellena el formulario y nuestro equipo de Sales contactará contigo lo antes posible.

growth@jotelulu.com  |  +34 911 333 712  |  jotelulu.com 

Puedes darte de baja de estas comunicaciones en cualquier momento.  Consulta nuestra Política de privacidad.