GNU/Linux >> Tutoriales Linux >  >> Linux

Eliminación de líneas específicas de un archivo en la línea de comandos de Linux

La tarea es sencilla. Tienes que eliminar líneas específicas de un archivo de texto en la terminal de Linux.

Puede usar un editor de texto como Vim o Nano, ingrese el archivo y elimine las líneas deseadas. Sin embargo, este enfoque no es adecuado para la automatización mediante scripts bash.

En su lugar, puede utilizar el potente editor de línea de comandos sed y eliminar líneas que coincidan con criterios específicos. Y, por supuesto, puede usar sed en sus scripts de shell.

Permítanme mostrar algunos casos de uso.

⚠️Los ejemplos que se muestran aquí modificarán el archivo original al instante. Sería una buena idea hacer una copia de seguridad de ese archivo antes de comenzar a experimentar con él.

Eliminar la enésima línea del archivo

Imagine que tiene que eliminar el número de la séptima línea en un archivo. Puede usar el comando sed de esta manera:

sed -i '7d' filename

Déjame explicarte cómo funciona:

  • -i :Esta opción habilita la edición en el lugar. De forma predeterminada, sed solo mostrará la salida. Con este -i opción, modifica el archivo real sin mostrarlo en la pantalla.
  • 7d :Aquí 7 es el número de línea y d indica la eliminación de la línea.
  • filename :Este es el archivo que desea modificar. También puede proporcionar una ruta absoluta o relativa si el archivo está en algún otro directorio.

Permítanme mostrar con un ejemplo real. Aquí hay un archivo de texto de muestra llamado agatha.txt:

The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
Giant's Bread
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies

Para eliminar la cuarta línea de este archivo, uso:

sed '4d' agatha.txt

Esto dará como resultado la siguiente pantalla con la línea 'Giant's Bread' eliminada:

The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies

Ahora, supongamos que desea eliminar la primera línea del archivo en la línea de comandos de Linux. Usa sed así:

sed -i '1d' filename
💡Si desea ver el resultado de la manipulación sin modificar el archivo en sí, no use -i opción del comando sed.

Eliminar la última línea usando sed

Aprendiste a eliminar una línea en particular, pero ¿qué sucede si necesitas eliminar la última línea?

Siempre puede obtener el número total de líneas en un archivo usando el comando wc y usar este número con sed. Sin embargo, sed tiene una forma dedicada de eliminar la última línea de un archivo. Ya no necesita preocuparse por la cantidad de archivos ahora.

sed -i '$d' filename.txt

Eliminar un rango de líneas

Similar a lo que vio anteriormente, también puede eliminar un rango de líneas del archivo.

Suponga que tiene que eliminar las líneas de 11 a 15, puede proporcionar el rango de esta manera:

sed -i '11,15d' filename

Tenga en cuenta que también eliminará las líneas 11 y 15, no solo las líneas que se encuentran entre ellas.

Eliminar líneas que contienen una cadena

También puede usar sed para eliminar todas las líneas que contengan una cadena dada o que coincidan con un patrón específico.

El siguiente comando eliminará todas las líneas que contengan la palabra 'cadena':

sed -i '/string/d' filename

Tenga en cuenta que esta es una búsqueda que distingue entre mayúsculas y minúsculas. También puede usar un patrón de expresiones regulares en lugar de una cadena normal.

Eliminar líneas que comienzan con una palabra

Si desea eliminar todas las líneas que comienzan con una palabra o letra en particular, solo tiene que proporcionar el patrón de expresión regular como este:

sed -i '/^word/d' filename

Consejo adicional:elimine todas las líneas vacías

Antes de terminar este artículo, permítanme compartir rápidamente cómo puede eliminar todas las líneas vacías usando sed:

sed -i '/^$/d' filename

Espero que encuentre útil este consejo rápido para eliminar líneas del archivo de texto en la línea de comandos de Linux.

Si está interesado, obtenga más información sobre el editor de línea de comandos sed:


Linux
  1. Cómo mostrar líneas específicas de un archivo en la línea de comandos de Linux

  2. Comando wc de linux

  3. Cómo contar el número de líneas en un archivo en Linux (ejemplos de comandos wc y nl)

  4. 7 ejemplos de comandos Linux Uniq para eliminar líneas duplicadas del archivo

  5. Linux:grep desde ciertas líneas hasta el final del archivo

Cómo extraer o descomprimir archivos tar.gz desde la línea de comandos de Linux

Pegar comando en Linux (combinar líneas)

Comando Diff en Linux con ejemplos

Copie un archivo a varios directorios desde la línea de comandos en Linux

Cómo mezclar líneas en un archivo en Linux

Cómo quitar líneas de un archivo usando el comando Sed