Questo articolo fa parte della serie di tutorial sui comandi Unix sed in corso. Nei nostri articoli precedenti abbiamo imparato sed con comandi singoli:stampa, eliminazione, sostituzione e scrittura di file.
Sed fornisce molti comandi per eseguire numerose operazioni con le righe in un file.
In questo articolo esaminiamo come aggiungere, inserire, sostituire una riga in un file e come ottenere i numeri di riga di un file.
- Aggiungi righe
- Inserisci righe
- Sostituisci linee
- Righe di conteggio
Per prima cosa creiamo il file geekstuff.txt che verrà utilizzato in tutti gli esempi menzionati di seguito.
$cat thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Aggiungi righe usando il comando Sed
Sed fornisce il comando “a” che aggiunge una riga dopo ogni riga con l'indirizzo o lo schema.
Syntax: #sed 'ADDRESS a\ Line which you want to append' filename #sed '/PATTERN/ a\ Line which you want to append' filename
Sed Append Esempio 1. Aggiungi una riga dopo la 3a riga del file.
Aggiungi la riga "Gadget e siti Web fantastici" dopo la terza riga. Il comando sed “a” inserisce la riga dopo la corrispondenza.
$ sed '3 a\ > Cool gadgets and websites' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Cool gadgets and websites Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Sed Append Esempio 2. Aggiungi una riga dopo ogni riga che corrisponde al modello
Il comando sed seguente aggiungerà la riga "Linux Scripting" dopo ogni riga che corrisponde al pattern "Sysadmin".
$ sed '/Sysadmin/a \ > Linux Scripting' thegeekstuff.txt Linux Sysadmin Linux Scripting Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc. Linux Scripting
Sed Append Esempio 3. Aggiungi una riga alla fine del file
L'esempio seguente aggiunge la riga "Website Design" alla fine del file.
$ sed '$ a\ > Website Design' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc. Website Design
Inserisci linee usando il comando Sed
Il comando Sed "i" viene utilizzato per inserire una riga prima di ogni riga con l'intervallo o il modello.
Syntax: #sed 'ADDRESS i\ Line which you want to insert' filename #sed '/PATTERN/ i\ Line which you want to insert' filename
Esempio di inserimento Sed 1. Aggiungi una riga prima della quarta riga della riga.
Aggiungi una riga "Gadget fantastici e siti Web" prima della 4a riga. Il comando "a" inserisce la riga dopo la corrispondenza mentre la "i" la inserisce prima della corrispondenza.
$ sed '4 i\ > Cool gadgets and websites' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Cool gadgets and websites Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Esempio di inserimento Sed 2. Inserisci una riga prima di ogni riga con il motivo
Il comando sed seguente aggiungerà una riga "Linux Scripting" prima di ogni riga che corrisponde al modello chiamato "Sysadmin".
$ sed '/Sysadmin/i \ > Linux Scripting' thegeekstuff.txt Linux Scripting Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Linux Scripting Windows- Sysadmin, reboot etc.
Sed Insert Esempio 3. Inserisci una riga prima dell'ultima riga del file.
Aggiungi una riga "Website Design" prima dell'ultima riga del file.
$ sed '$ i\ > Website Design' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Website Design Windows- Sysadmin, reboot etc.
Sostituisci le linee usando il comando Sed
Il comando "c" in sed viene utilizzato per sostituire ogni riga che corrisponde al modello o intervalli con la nuova riga data.
Syntax: #sed 'ADDRESS c\ new line' filename #sed '/PATTERN/ c\ new line' filename
Sed Sostituire Esempio 1. Sostituire una prima riga del file
Il comando seguente sostituisce la prima riga del file con "The Geek Stuff".
$ sed '1 c\ > The Geek Stuff' thegeekstuff.txt The Geek Stuff Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Sed Sostituire Esempio 2. Sostituisci una linea che corrisponde al modello
Sostituisci ogni riga che ha un modello "Linux Sysadmin" in "Linux Sysadmin - Scripting".
$ sed '/Linux Sysadmin/c \ > Linux Sysadmin - Scripting' thegeekstuff.txt Linux Sysadmin - Scripting Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Windows- Sysadmin, reboot etc.
Sed Sostituire Esempio 3. Sostituisci l'ultima riga del file
Il comando Sed fornito di seguito sostituisce l'ultima riga del file con "Ultima riga del file".
$ sed '$ c\ > Last line of the file' thegeekstuff.txt Linux Sysadmin Databases - Oracle, mySQL etc. Security (Firewall, Network, Online Security etc) Storage in Linux Productivity (Too many technologies to explore, not much time available) Last line of the file
Stampa i numeri di riga utilizzando il comando Sed
“=” è un comando in sed per stampare il numero di riga corrente sullo standard output.
Syntax: #sed '=' filename
La sintassi del comando di invio precedente stampa il numero di riga nella prima riga e la riga originale del file nella riga successiva.
Il comando sed '=' accetta solo un indirizzo, quindi se vuoi stampare il numero di riga per un intervallo di righe, devi usare le parentesi graffe.
Syntax: # sed -n '/PATTERN/,/PATTERN/ { = p }' filename
Esempio di numero di riga Sed 1. Trova il numero di riga che contiene il modello
Il comando sed sottostante stampa il numero di riga per cui corrisponde al pattern “Database”
$ sed -n '/Databases/=' thegeekstuff.txt 2
Esempio di numero di riga Sed 2. Stampa dell'intervallo di numeri di riga
Stampa i numeri di riga per le corrispondenze di riga dal modello "Oracle" a "Produttività".
$ sed -n '/Oracle/,/Productivity/{ > = > p > }' thegeekstuff.txt 2 Databases - Oracle, mySQL etc. 3 Security (Firewall, Network, Online Security etc) 4 Storage in Linux 5 Productivity (Too many technologies to explore, not much time available)
Esempio di numero di riga Sed 3. Stampa il numero totale di righe in un file
Il numero di riga dell'ultima riga del file sarà il totale delle righe in un file. Pattern $ specifica l'ultima riga del file.
$ sed -n '$=' thegeekstuff.txt 6