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.