GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial de Unix Sed:eliminar líneas de archivos usando direcciones y patrones

En el tutorial sed anterior, discutimos sobre los conceptos básicos del comando sed de Unix y la impresión de líneas desde un archivo usando direcciones y patrones sed .

En este artículo, revisemos cómo eliminar líneas de un archivo usando direcciones y patrones con 8 ejemplos asombrosos.

  • El comando "p" imprime el búfer (recuerde usar la opción -n con "p")
  • El comando "d" está justo enfrente, es para borrar. 'd' eliminará el búfer de espacio de patrones e inmediatamente comenzará el siguiente ciclo.
Syntax:

# sed 'ADDRESS'd filename

# sed /PATTERN/d filename

La sintaxis para DIRECCIONES y PATRONES dada en la impresión también es aplicable para la eliminación, excepto la opción -n. (-n solo para suprimir el búfer de patrón de impresión, se puede usar con el comando "p")

Primero creemos el archivo geekstuff.txt que se usará en todos los ejemplos mencionados a continuación.

# cat thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

1. Eliminar línea N

'Nd' elimina la línea N e imprime las otras líneas.

nombre de archivo sed 'Nd'

Según la metodología sed,

  • Lee la primera línea y la coloca en su búfer de patrón.
  • Compruebe si el comando suministrado es verdadero para esta línea, si es verdadero, elimina el búfer de espacio de patrones y comienza el próximo ciclo. es decir, Leer la siguiente línea.
  • Si el comando proporcionado no es verdadero, como su comportamiento normal, imprime el contenido del búfer de espacio de patrón.

Por ejemplo, 3d elimina la tercera línea e imprime otras líneas como se muestra a continuación.

$ sed 3d thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

2. Eliminar a partir de la 3.ª línea y cada 2.ª línea a partir de ahí.

$ sed '3~2d' thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
4. Security (Firewall, Network, Online Security etc)
6. Cool gadgets and websites
8. Website Design
10.Windows- Sysadmin, reboot etc.

3. Eliminar de la línea 4 a la 8 del archivo.

$ sed '4,8d' thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
9. Software Development
10.Windows- Sysadmin, reboot etc.

4. Elimina la última línea de la entrada.

$ sed '$d' thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development

5. Elimine la línea que coincida con el patrón dado de la entrada.

Por ejemplo, el siguiente comando elimina la línea que coincide con "Sysadmin".

$ sed /Sysadmin/d thegeekstuff.txt
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development

6. Elimina la línea desde la que coincide el patrón dado hasta el final del archivo.

$ sed '/Website/,$d' thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)

7. Elimina la línea que coincide con el patrón dado y 2 líneas al lado.

$ sed '/Storage/,+2d' thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

8. Eliminar línea en blanco de un archivo usando sed

También puede eliminar líneas en blanco con sed. El siguiente ejemplo de sed muestra cómo usar sed y eliminar líneas en blanco.

$ sed '/^$/d' thegeekstuff.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

Linux
  1. Uso de sed para buscar y reemplazar archivos de texto en Linux

  2. ¿Imprimir líneas entre (y excluyendo) dos patrones?

  3. ¿Imprimir líneas entre (e incluyendo) dos patrones?

  4. ¿Cómo eliminar varias líneas aleatorias de un archivo de texto usando Sed?

  5. ¿Cómo eliminar las primeras N líneas de un archivo ASCII usando los comandos de Shell?

Tutorial de Unix Sed:Impresión de líneas de archivos usando direcciones y patrones

Tutorial de Unix Sed:busque y reemplace texto dentro de un archivo usando RegEx

Tutorial de Unix Sed:Cómo escribir en un archivo usando Sed

Tutorial de Unix Sed:anexar, insertar, reemplazar y contar líneas de archivos

Tutorial de Unix Sed:7 ejemplos de operaciones Sed Hold y Pattern Buffer

Tutorial de Unix Sed:operación de archivos de varias líneas con 6 ejemplos prácticos