Sed, abbreviazione di Stream EDitor, è un comando utilizzato per eseguire trasformazioni e manipolazioni di testo su un file. Alcune di queste trasformazioni includono la ricerca e la sostituzione del testo. Con il comando sed di Linux, puoi manipolare e modificare file di testo senza nemmeno aprirli. In questo tutorial imparerai come manipolare i file di testo usando il comando sed.
Sintassi del comando Linux sed
$ sed {OPTIONS} filename
In questo tutorial useremo linuxgeek.txt
come nostro file di riferimento.
# cat linuxgeek.txt
Risultato
1. Sostituzione o sostituzione di una stringa
Nella maggior parte dei casi, il comando sed viene utilizzato per sostituire stringhe di testo.
Il comando seguente sostituisce "Linux ' con 'Unix '.
# sed 's/Linux/Unix/' linuxgeek.txt
- I
s
nel comando c'è l'indicatore di sostituzione. - Il
/
sono i delimitatori Linux
è il termine di ricercaunix
è il termine sostitutivo
Per impostazione predefinita, il comando sed sostituisce solo la prima occorrenza in una riga . Le occorrenze successive non verranno sostituite né sostituite.
Risultato
2. Sostituendo o sostituendo l'ennesima occorrenza in una riga
Se vuoi sostituire la seconda occorrenza di stringa in una riga, usa /2
flag come mostrato.
# sed 's/Linux/Unix/2' linuxgeek.txt
Risultato
3. Sostituendo o sostituendo tutte le occorrenze del modello in un file
Per sostituire tutte le occorrenze del modello di ricerca nel file, usa /g
bandiera. Il /g
è il sostituto globale.
# sed 's/Linux/Unix/g' linuxgeek.txt
Risultato
4. Sostituendo o sostituendo tutte le occorrenze di una stringa solo in una riga specifica
Se vuoi sostituire tutte le occorrenze di una stringa in una riga specifica, ad esempio nella riga 2, usa la sintassi seguente
# sed '2 s/Linux/Unix/g' linuxgeek.txt
Risultato
5. Sostituzione o sostituzione di una stringa in un intervallo specifico di righe
Se si desidera specificare l'intervallo di righe in cui avverrà la sostituzione della stringa, utilizzare l'esempio mostrato di seguito. L'esempio indica che la sostituzione avvenga dalle righe 1 -3
# sed '1,3 s/Linux/Unix/g' linuxgeek.txt
Risultato
Inoltre, puoi sostituire il testo da una riga specifica alla fine del file come mostrato
# sed '2,$ s/Linux/Unix/g' linuxgeek.txt
Quello che fa il comando è che sostituisce tutte le occorrenze dalla seconda riga all'ultima riga del file.
Risultato
6. Metti tra parentesi il primo carattere di ogni parola
L'esempio seguente mostra come inserire parentesi su ogni primo carattere di una parola in una riga.
$ echo "Hey Guys, Welcome To Linux Operating System" | sed 's/\(\b[A-Z]\)/\(\1\)/g'
Risultato
7. Elimina le righe da un file
Puoi anche usare il comando linux sed per eliminare le righe in un file.
Esempi
Sintassi:
$ sed 'nd' filename.txt
Per eliminare la 3a riga nel file eseguire
$ sed '3d' linuxgeek.txt
Risultato
Per eliminare un intervallo di righe, diciamo dalla riga 3 alla riga 5 , esegui il comando:
$ sed '3,5d' linuxgeek.txt
Risultato