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

13 de noviembre de 2024
¡Tenemos nuevas distros en Servidores! En respuesta a las múltiples solicitudes de varios de nuestros partners, se ha habilitado
13 de noviembre de 2024
¡Ya es posible desplegar plantillas de diferentes softwares desde el asistente de despliegue de servidores! Estrenamos esta funcionalidad del
13 de noviembre de 2024
¡Integración con QNAP! Ya es posible crear copias sincronizadas entre dispositivos de almacenamiento local QNAP y nuestro servicio 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.

Precios competitivos para la pyme y mucho más margen para el partner

Disaster Recovery ha sido diseñado, implementado y puesto en producción teniendo en cuenta dos premisas: Debe tener un precio atractivo para la pyme a la vez que deja un buen margen de beneficio a la empresa de IT que lo comercializa y gestiona.

DR_buen_precio_y_mas_margen

De esta manera, Disaster Recovery pretende ser un producto diferencial que permita incrementar la seguridad de todo tipo de empresas de manera asequible e implicando, además, rentabilidad para el distribuidor que lo comercializa.

Protege la infraestructura de tus clientes

Disaster Recovery permite replicar cualquier suscripción de infraestructura (Escritorio Remoto y Servidores) en otra zona de disponibilidad creando un entorno de alta disponibilidad y blindando así el servicio.

Replica en pocos pasos no sólo los discos sino todos los elementos que forman parte de cada suscripción:

  • Servidores: Instancias, discos, reglas de firewall, redes, IPs…
  • Escritorio Remoto: Usuarios, Aplicaciones, Licencias, Personalización…
DR_blinda_la_infraestructura

Tratamos de hacer fácil lo difícil

Las herramientas de Disaster Recovery existentes necesitan de conocimientos avanzados para poder ser gestionadas, implicando, muchas veces, un expertise difícil de alcanzar.

 

Disaster Recovery de Jotelulu busca hacer fácil lo difícil y plantea un despliegue muy sencillo basado en una configuración de tres pasos:

Origin (Primary Site)
Determina la ubicación de origen de la suscripción sobre la que se va a establecer el servicio de Disaster Recovery.

Destino (Recovery Site)
Establece la ubicación de destino (zona de disponibilidad) en la que quieres que se despliegue el Recovery Site.

Características de la réplica
Establece los datos asociados al número de copias que se quieren guardar y la frecuencia con la que se va a llevar a cabo la réplica.