GNU/Linux >> Linux Esercitazione >  >> Linux

Tutorial Unix Sed:aggiungi, inserisci, sostituisci e conta righe di file

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

Linux
  1. Contare le righe in un file?

  2. Come contare il numero di righe in un file in Linux (esempi di comandi wc e nl)

  3. Come contare le righe in un file in UNIX/Linux

  4. lo script bash aggiunge il testo alla prima riga di un file

  5. Trova e sostituisci il testo in un file tra un intervallo di righe usando sed

Esercitazione Unix Sed:stampa di righe di file utilizzando l'indirizzo e i modelli

Tutorial Unix Sed:trova e sostituisci testo all'interno di un file usando RegEx

Esercitazione Unix Sed:Elimina le righe di file utilizzando l'indirizzo e i modelli

Tutorial Unix Sed:come scrivere su un file usando Sed

Tutorial Unix Sed:operazione su file multilinea con 6 esempi pratici

Come utilizzare Sed per trovare e sostituire una stringa in un file