Este artículo forma parte de la serie de tutoriales de Unix Sed. En artículos anteriores, discutimos sobre la operación de impresión de sed, la operación de eliminación de sed y la búsqueda y reemplazo de sed.
En este artículo, revisemos cómo extraer parte de un archivo y escribirlo en otro archivo usando sed.
Sed proporciona el comando "w" para escribir los datos del espacio del patrón en un archivo nuevo.
Sed crea o trunca el nombre de archivo dado antes de leer la primera línea de entrada y escribe todas las coincidencias en un archivo sin cerrar y volver a abrir el archivo.
Syntax: #sed 'ADDERSSw outputfile' inputfilename #sed '/PATTERN/w outputfile' inputfilename
Sed lee una línea y la coloca en un búfer de patrón y escribe el búfer de patrón en el archivo de salida dado de acuerdo con los comandos provistos.
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.
Revisemos algunos ejemplos del comando de escritura en sed.
1. Escribe la primera línea del archivo
En este ejemplo, 1 (dirección) hace referencia a la primera línea de la entrada y w escribe el búfer de patrones en el archivo de salida “output.txt”
$ sed -n '1w output.txt' thegeekstuff.txt $ cat output.txt 1. Linux - Sysadmin, Scripting etc.
2. Escribe la primera y última línea del archivo
En este ejemplo, 1 y $ se refieren a la primera y última línea respectivamente.
$ sed -n -e '1w output.txt' -e '$w output.txt' thegeekstuff.txt $ cat output.txt 1. Linux - Sysadmin, Scripting etc. 10.Windows- Sysadmin, reboot etc.
3. Escriba las coincidencias de líneas con el patrón Storage o Sysadmin
En este ejemplo, el comando sed escribe las líneas que coinciden con el patrón "Almacenamiento" o "Sysadmin".
$ sed -n -e '/Storage/w output.txt' -e '/Sysadmin/w output.txt' thegeekstuff.txt $ cat output.txt 1. Linux - Sysadmin, Scripting etc. 5. Storage 10.Windows- Sysadmin, reboot etc.
4. Escriba las líneas desde las que coincide el patrón hasta el final del archivo
En este ejemplo, /Almacenamiento/,$ representa coincidencias de línea desde Almacenamiento hasta el final del archivo.
$ sed -n '/Storage/,$w output.txt' thegeekstuff.txt $ cat output.txt 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.
5. Escriba las líneas que coincidan con el patrón y las siguientes dos líneas del partido
En este ejemplo, el comando de envío escribe las coincidencias de línea para "Almacenamiento" y dos líneas al lado.
$ sed -n '/Storage/,+2w output.txt' thegeekstuff.txt $ cat output.txt 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available)