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.