logo

Comando Sed in Linux/Unix con esempi

Il comando SED in UNIX sta per stream editor e può eseguire molte funzioni su file come la ricerca, la ricerca e la sostituzione, l'inserimento o l'eliminazione. Sebbene l'uso più comune del comando SED in UNIX sia per la sostituzione o per la ricerca e sostituzione. Usando SED puoi modificare i file anche senza aprirli, il che è un modo molto più rapido per trovare e sostituire qualcosa nel file, piuttosto che aprire prima quel file in VI Editor e poi modificarlo.

  • SED è un potente editor di flussi di testo. Può eseguire l'inserimento, la cancellazione, la ricerca e la sostituzione (sostituzione).
  • Il comando SED in Unix supporta l'espressione regolare che consente di eseguire corrispondenze di modelli complessi.

Sintassi:



 sed OPTIONS... [SCRIPT] [INPUTFILE...]>

Esempio:
Considera il file di testo seguente come input.

 $cat>geekfile.txt>>
 unix is great os. unix is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

Comandi di esempio

    Sostituzione o sostituzione di una stringa: il comando Sed viene utilizzato principalmente per sostituire il testo in un file. Il semplice comando sed riportato di seguito sostituisce la parola unix con linux nel file.
     $sed 's/unix/linux/' geekfile.txt>

    Produzione :



     linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Qui la s specifica l'operazione di sostituzione. Il / sono delimitatori. Unix è il modello di ricerca e Linux è la stringa sostitutiva.

    Per impostazione predefinita, il comando sed sostituisce la prima occorrenza del pattern in ogni riga e non sostituirà la seconda, terza... occorrenza nella riga. Sostituzione dell'ennesima occorrenza di un motivo in una riga: utilizzare i flag /1, /2 ecc per sostituire la prima, la seconda occorrenza di un motivo in una riga. Il comando seguente sostituisce la seconda occorrenza della parola unix con linux in una riga.

     $sed 's/unix/linux/2' geekfile.txt>

    Produzione:



     unix is great os. linux is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.linux is a multiuser os.Learn unix .unix is a powerful.>
    Sostituzione di tutte le occorrenze del modello in una riga: il flag sostitutivo /g (sostituzione globale) specifica il comando sed per sostituire tutte le occorrenze della stringa nella riga.
     $sed 's/unix/linux/g' geekfile.txt>

    Produzione :

     linux is great os. linux is opensource. linux is free os. learn operating system. linux linux which one you choose. linux is easy to learn.linux is a multiuser os.Learn linux .linux is a powerful.>
    Sostituzione dall'ennesima occorrenza a tutte le occorrenze in una riga: utilizzare la combinazione di /1, /2 ecc. e /g per sostituire tutti i modelli dall'ennesima occorrenza di un modello in una riga. Il seguente comando sed sostituisce la terza, quarta, quinta... parola unix con la parola linux in una riga.
     $sed 's/unix/linux/3g' geekfile.txt>

    Produzione:

     unix is great os. unix is opensource. linux is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn linux .linux is a powerful.>
    Metti tra parentesi il primo carattere di ogni parola: questo esempio sed stampa il primo carattere di ogni parola tra parentesi.
     $ echo 'Welcome To The Geek Stuff' | sed 's/([A-Z])/(1)/g'>

    Produzione:

    sonu nigam
     (W)elcome (T)o (T)he (G)eek (S)tuff>
    Sostituzione di una stringa su un numero di riga specifico: è possibile limitare il comando sed per sostituire la stringa su un numero di riga specifico. Un esempio è
     $sed '3 s/unix/linux/' geekfile.txt>

    Produzione:

     unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Il comando sed precedente sostituisce la stringa solo sulla terza riga. Duplicazione della riga sostituita con il flag /p : Il flag /p print stampa la riga sostituita due volte sul terminale. Se una riga non ha il criterio di ricerca e non viene sostituita, /p stampa quella riga solo una volta.

     $sed 's/unix/linux/p' geekfile.txt>

    Produzione:

     linux is great os. unix is opensource. unix is free os. linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
    Stampa solo delle righe sostituite: utilizzare l'opzione -n ​​insieme al flag di stampa /p per visualizzare solo le righe sostituite. Qui l'opzione -n ​​sopprime le righe duplicate generate dal flag /p e stampa le righe sostituite solo una volta.
     $sed -n 's/unix/linux/p' geekfile.txt>

    Produzione:

     linux is great os. unix is opensource. unix is free os. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Se usi -n da solo senza /p, sed non stampa nulla. Sostituzione di una stringa su un intervallo di righe: è possibile specificare un intervallo di numeri di riga nel comando sed per sostituire una stringa.

     $sed '1,3 s/unix/linux/' geekfile.txt>

    Produzione:

     linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>

    Qui il comando sed sostituisce le righe con un intervallo compreso tra 1 e 3. Un altro esempio è

     $sed '2,$ s/unix/linux/' geekfile.txt>

    Produzione:

     unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful>

    Qui $ indica l'ultima riga del file. Quindi il comando sed sostituisce il testo dalla seconda riga all'ultima riga nel file. Eliminazione di righe da un file particolare: il comando SED può essere utilizzato anche per eliminare righe da un file particolare. Il comando SED viene utilizzato per eseguire l'operazione di eliminazione senza nemmeno aprire il file
    Esempi:
    1. Per eliminare una riga particolare, pronuncia n in questo esempio

     Syntax: $ sed 'nd' filename.txt Example: $ sed '5d' filename.txt>

    2. Per eliminare l'ultima riga

     Syntax: $ sed '$d' filename.txt>

    3. Per eliminare la riga dall'intervallo da x a y

     Syntax: $ sed 'x,yd' filename.txt Example: $ sed '3,6d' filename.txt>

    4. Per eliminare dall'ennesima all'ultima riga

     Syntax: $ sed 'nth,$d' filename.txt Example: $ sed '12,$d' filename.txt>

    5. Per eliminare la linea di corrispondenza del modello

     Syntax: $ sed '/pattern/d' filename.txt Example: $ sed '/abc/d' filename.txt>


Comando SED in Linux | Insieme 2