Questo articolo fa parte della serie Unix Sed Tutorial. Negli articoli precedenti, abbiamo discusso di sed print operation , sed delete operation e sed find and replace.
In questo articolo, esaminiamo come estrarre parte di un file e scriverlo in un altro file utilizzando sed.
Sed fornisce il comando "w" per scrivere i dati dello spazio del modello in un nuovo file.
Sed crea o tronca il nome del file specificato prima di leggere la prima riga di input e scrive tutte le corrispondenze in un file senza chiudere e riaprire il file.
Syntax: #sed 'ADDERSSw outputfile' inputfilename #sed '/PATTERN/w outputfile' inputfilename
Sed legge una riga e la inserisce in un pattern buffer e scrive il pattern buffer nel file di output specificato secondo i comandi forniti.
Per prima cosa creiamo il file geekstuff.txt che verrà utilizzato in tutti gli esempi menzionati di seguito.
# 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.
Esaminiamo alcuni esempi di comando di scrittura in sed.
1. Scrivi la prima riga del file
In questo esempio, 1 (indirizzo) fa riferimento alla prima riga dell'input e w scrive il pattern buffer nel file di output “output.txt”
$ sed -n '1w output.txt' thegeekstuff.txt $ cat output.txt 1. Linux - Sysadmin, Scripting etc.
2. Scrivi la prima e l'ultima riga del file
In questo esempio, 1 e $ si riferiscono rispettivamente alla prima e all'ultima riga.
$ 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. Scrivi le righe che corrispondono al pattern Storage o Sysadmin
In questo esempio il comando sed scrive le righe che corrispondono al pattern “Storage” 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. Scrivi le righe da cui il modello corrisponde fino alla fine del file
In questo esempio, /Storage/,$ rappresenta le corrispondenze di riga da Storage alla fine del file.
$ 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. Scrivi le righe che corrispondono al modello e le due righe successive della corrispondenza
In questo esempio, il comando send scrive le corrispondenze di riga per "Storage" e due righe accanto.
$ 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)