Comando sed para eliminar una línea

Comando sed para eliminar una línea
SED es una herramienta Linux incorporada para la manipulación de texto. El término sed representa editor de transmisión. A pesar del nombre, SED no es un editor de texto por sí mismo. Más bien, toma texto como entrada, realiza varias modificaciones de texto de acuerdo con las instrucciones e imprime la salida.

Esta guía demostrará cómo usar SED para eliminar una línea de un texto.

Sed en Linux

El nombre completo de SED nos da una pista de su método de trabajo. SED toma el texto de entrada como un arroyo. El texto puede venir de cualquier lugar: un archivo de texto o salida estándar (stdout). Después de tomar la entrada, SED funciona en línea por línea.

Para la demostración, aquí hay un archivo de texto simple que he generado.

$ Cat Dummy.TXT
1. el
2. rápido
3. marrón
4. zorro
5. salto
6. encima
7. el
8. perezoso
9. perro

Eliminar línea usando SED

Para eliminar una línea, usaremos el comando SED "D". Tenga en cuenta que debe declarar qué línea eliminar. De lo contrario, SED eliminará todas las líneas.

Eliminar una sola línea

El siguiente comando SED eliminará la primera línea del texto.

Sed '1d' muñeco.TXT

Básicamente, para eliminar una línea, necesita el número de línea de la línea de destino. Eliminemos la línea 5.

Sed '5d' muñeco.TXT

Para eliminar la última línea del archivo de texto, en lugar de calcular manualmente el número de línea, use "$" en su lugar.

sed '$ d' ficticio.TXT

Eliminar una gama de línea

SED puede eliminar una variedad de líneas. Aquí, el valor de línea mínima es 1, y el valor de línea máximo es 5. Para declarar el rango, estamos usando coma (,).

Sed '1,5d' muñeco.TXT

Eliminar múltiples líneas

¿Qué pasa si las líneas que desea eliminar no están en un rango fijo?? Eche un vistazo al siguiente comando SED. Tenga en cuenta que estamos usando un semicolon (;) como delimitador. Esencialmente, cada opción delimitada es un comando SED separado.

sed '1d; 2d; 3d; $ d' Dummy.TXT

Eliminar todas las líneas excepto el rango especificado

En el siguiente ejemplo, SED solo mantendrá las líneas descritas por el rango. Aquí, "!"¿Es el operador de negación y le dice a SED que mantenga las líneas específicas.

sed '2,4!D 'Dummy.TXT

Eliminar líneas vacías

Si hay múltiples líneas vacías o en blanco en el texto, el siguiente comando SED las eliminará todas.

sed '/^$/d' Dummy.TXT

Eliminar líneas basadas en el patrón

SED puede buscar un patrón particular y realizar las acciones especificadas en la línea. Podemos usar esta función para eliminar líneas específicas que coincidan con un patrón.

Echemos un vistazo a la siguiente demostración. SED eliminará cualquier línea que contenga la cadena "el".

sed '/the/d' muñeco.TXT

También podemos describir múltiples cadenas para buscar. Cada cadena se delimita usando el símbolo "\ |".

sed '/brown \ | the/d' muñeco.TXT

Eliminar líneas que comienzan con un carácter específico

Para denotar el inicio de una línea, usaremos el símbolo de Caret (^).

El siguiente comando SED eliminará todas las líneas que comienzan con un dígito. Aquí, el grupo de caracteres "[: dígito:]" describe todos los dígitos (0-9).

sed '/^[[: dígito:]]/d' Dummy.TXT

También podemos describir múltiples caracteres para una coincidencia válida. El siguiente ejemplo coincidirá con todas las líneas que comienzan con "T" y "B".

sed '/^[tb]/d' Dummy.TXT

En el siguiente ejemplo, consulte cómo eliminar todas las líneas que comienzan con un carácter mayúscula. Aquí, estamos usando el grupo de caracteres en mayúsculas "[: Upper:]".

sed '/^[[: superior:]]/d' Dummy.TXT

Si las líneas de destino tienen caracteres en minúsculas al principio, use el grupo de caracteres en minúsculas "[: Lower:]".

sed '/^[[: inferior:]]/d' Dummy.TXT

Eliminar líneas que terminan con carácter específico

Para denotar el final de una línea, podemos usar el símbolo "$". Describe la coincidencia con la última ocurrencia del patrón.

En el siguiente ejemplo, SED eliminará las líneas que terminan con "E".

sed '/e $/d' muñeco.TXT

Intentemos con una búsqueda de múltiples caracteres.

sed '/[en] $/d' Dummy.TXT

Eliminar líneas que coincidan con el patrón y la siguiente línea

Ya hemos demostrado cómo eliminar una línea si un patrón coincide. Podemos extender y eliminar aún más la línea posterior también.

Echa un vistazo al siguiente comando SED.

sed '/the/n; d;' muñeco.TXT

SED coincidirá con la línea que contiene "el" y eliminará la línea posterior también.

Eliminar la línea de la coincidencia del patrón hasta el final

Podemos extender aún más el ejemplo anterior para ordenar SED para eliminar todas las líneas, comenzando desde el primer partido del patrón.

Sed '/Fox/, $ D' Dummy.TXT

Aquí, SED eliminará la línea que coincide con el patrón "el" primero y todas las líneas después.

Pensamiento final

SED es una herramienta simple. Sin embargo, puede hacer maravillas, gracias al soporte para la expresión regular. SED también se integra a la perfección en varios scripts.

Esta fue solo una guía corta que demostró una de las funciones SED: eliminar líneas. Hay toneladas de otras cosas que puedes hacer con SED. Por ejemplo, consulte esta mega guía sobre 50 ejemplos SED. Es una guía fantástica que cubre todos los conceptos básicos y muchas implementaciones SED avanzadas.