GNU/Linux >> Linux Esercitazione >  >> Linux

20 Esempi di comandi Sed (Stream Editor) per utenti Linux

Comando Sed o Stream Editor è un'utilità molto potente offerta dai sistemi Linux/Unix. Viene utilizzato principalmente per la sostituzione del testo , trova e sostituisci ma può anche eseguire altre manipolazioni del testo come inserimento , eliminazione , cerca ecc. Con SED possiamo modificare file completi senza doverli aprire. Sed supporta anche l'uso di espressioni regolari, il che rende sed uno strumento di manipolazione dei test ancora più potente .

In questo articolo impareremo ad usare il comando SED con l'aiuto di alcuni esempi. La sintassi di base per l'utilizzo del comando sed è,

sed OPTIONS… [SCRIPT] [INPUTFILE…]

Vediamo ora alcuni esempi.

Esempio :1) Visualizzazione del testo parziale di un file

Con sed, possiamo visualizzare solo una parte di un file invece di vedere il file intero. Per vedere alcune righe del file, usa il seguente comando,

[[email protected] ~]$ sed -n 22,29p testfile.txt

qui, l'opzione 'n' sopprime la stampa dell'intero file e l'opzione 'p' stamperà solo righe da 22 a 29.

Esempio :2) Visualizza tutto tranne alcune righe

Per visualizzare tutto il contenuto di un file tranne una parte, usa il comando seguente,

[[email protected] ~]$ sed 22,29d testfile.txt

L'opzione 'd' rimuoverà le righe menzionate dall'output.

Esempio :3) Visualizza ogni terza riga che inizia con l'ennesima riga

Visualizza il contenuto di ogni terza riga che inizia con la riga numero 2 o qualsiasi altra riga, usa il comando seguente

[[email protected] ~]$ sed -n '2~3p' file.txt

Esempio:4) Eliminazione di una riga utilizzando il comando sed

Per eliminare una riga con sed da un file, utilizzare il comando seguente,

[[email protected] ~]$ sed Nd testfile.txt

dove 'N' è il numero di riga e l'opzione 'd' cancellerà il numero di riga menzionato. Per eliminare l'ultima riga del file, usa

[[email protected] ~]$ sed $d testfile.txt

Esempio :5) Eliminazione di un intervallo di righe

Per eliminare un intervallo di righe dal file, esegui

[[email protected] ~]$ sed '29,34d' testfile.txt

Questo cancellerà le righe da 29 a 34 dal file testfile.txt.

Esempio :6) Eliminazione di righe diverse da quelle menzionate

Per eliminare righe diverse da quelle citate da un file, useremo '!'

[[email protected] ~]$ sed '29,34!d' testfile.txt

qui l'opzione '!' è utilizzata come non, quindi invertirà la condizione, ovvero non cancellerà le righe menzionate. Tutte le righe altre 29-34 verranno eliminate dai file testfile.txt.

Esempio:7) Aggiunta di righe/spazi vuoti

Per aggiungere una riga vuota dopo ogni riga non vuota, utilizzeremo l'opzione 'G',

[[email protected] ~]$ sed G testfile.txt

Esempio :8) Cerca e sostituisci una stringa usando sed

Per cercare e sostituire una stringa dal file, utilizzeremo il seguente esempio,

[[email protected] ~]$ sed 's/danger/safety/' testfile.txt

qui l'opzione "s" cercherà la parola "pericolo" e la sostituirà con "sicurezza" su ogni riga solo per la prima occorrenza.

Esempio :9) Cerca e sostituisci una stringa da un intero file usando sed

Per sostituire completamente la parola dal file, utilizzeremo l'opzione 'g' con 's',

[[email protected] ~]$ sed 's/danger/safety/g' testfile.txt

Esempio :10) Sostituisci l'ennesima occorrenza dello schema di stringa

Possiamo anche sostituire una stringa all'ennesima occorrenza da un file. Come sostituire "pericolo" con "sicurezza" solo alla seconda occorrenza,

[[email protected] ~]$ sed ‘s/danger/safety/2’ testfile.txt

Per sostituire "pericolo" alla seconda occorrenza di ogni riga dell'intero file, usa

[[email protected] ~]$ sed 's/danger/safety/2g' testfile.txt

Esempio :11) Sostituisci una stringa su una riga particolare

Per sostituire una stringa solo da una riga particolare, usa

[[email protected] ~]$ sed '4 s/danger/safety/' testfile.txt

Questo sostituirà solo la stringa dalla 4a riga del file. Possiamo anche citare un intervallo di righe invece di una singola riga,

[[email protected] ~]$  sed '4,9 s/danger/safety/' testfile.txt

Esempio :12) Aggiungi una riga dopo/prima della ricerca con corrispondenza

Per aggiungere una nuova riga con del contenuto dopo ogni corrispondenza di pattern, usa l'opzione 'a' ,

[[email protected] ~]$ sed '/danger/a "This is new line with text after match"' testfile.txt

Per aggiungere una nuova riga con del contenuto prima di ogni corrispondenza di pattern, usa l'opzione 'i',

[[email protected] ~]$ sed '/danger/i "This is new line with text before match" ' testfile.txt

Esempio :13) Modificare un'intera riga con motivo abbinato

Per cambiare un'intera riga in una nuova riga quando un modello di ricerca corrisponde, dobbiamo usare l'opzione 'c' con sed,

[[email protected] ~]$ sed '/danger/c "This will be the new line" ' testfile.txt

Quindi, quando il modello corrisponde a "pericolo", l'intera riga verrà modificata nella riga menzionata.

Opzioni avanzate con sed

Finora usavamo solo espressioni semplici con sed, ora discuteremo alcuni usi avanzati di sed con regex,

Esempio :14) Esecuzione di più comandi sed

Se dobbiamo eseguire più espressioni sed, possiamo usare l'opzione 'e' per concatenare i comandi sed,

[[email protected] ~]$  sed -e 's/danger/safety/g' -e 's/hate/love/' testfile.txt

Esempio :15) Fare una copia di backup prima di modificare un file

Per creare una copia di backup di un file prima di modificarlo, usa l'opzione '-i.bak',

[[email protected] ~]$ sed -i.bak -e 's/danger/safety/g'  testfile.txt

Questo creerà una copia di backup del file con estensione .bak. Puoi anche utilizzare un'altra estensione, se lo desideri.

Esempio:16) Elimina una riga di file che inizia con e termina con uno schema

Per eliminare una riga che inizia con una stringa particolare e termina con un'altra stringa, usa

[[email protected] ~]$ sed -e 's/^danger.*stops$//g' testfile.txt

Questo cancellerà la riga con "pericolo" all'inizio e "ferma" alla fine e può contenere un numero qualsiasi di parole tra , ".*" definisce quella parte.

Esempio :17) Righe aggiunte

Per aggiungere del contenuto prima di ogni riga con sed ®ex, usa

[[email protected] ~]$ sed -e 's/.*/testing sed &/' testfile.txt

Quindi ora ogni riga avrà prima "test sed".

Esempio:18) Rimozione di tutte le righe commentate e vuote

Per rimuovere tutte le righe commentate, ovvero le righe con # e tutte le righe vuote, usa

[[email protected] ~]$ sed -e 's/#.*//;/^$/d' testfile.txt

Per rimuovere solo le righe commentate, usa

[[email protected] ~]$ sed -e 's/#.*//' testfile.txt

Esempio :19) Ottieni l'elenco di tutti i nomi utente da /etc/passwd

Per ottenere l'elenco di tutti i nomi utente dal file /etc/passwd, usa

[[email protected] ~]$  sed 's/\([^:]*\).*/\1/' /etc/passwd

un elenco completo di tutti i nomi utente verrà generato sullo schermo come output.

Esempio :20) Impedisci la sovrascrittura dei collegamenti di sistema con il comando sed

È noto che il comando 'sed -i' rimuove i collegamenti di sistema e crea solo file regolari al posto del file di collegamento. Quindi, per evitare una situazione del genere e prevenire "sed -i ‘ dalla distruzione dei link, usa ‘–follow-symklinks ‘ opzioni con il comando in esecuzione.

Supponiamo che io voglia disabilitare SELinux su CentOS o server RHEL

[[email protected] ~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Questi erano alcuni esempi per mostrare sed, possiamo usare questi riferimenti per impiegarli come e quando necessario. Se avete domande relative a questo o a qualsiasi articolo, condividete con noi.

Leggi anche14 esempi di comandi SCP per trasferire file in modo sicuro in Linux


Linux
  1. 8 suggerimenti per la riga di comando di Linux

  2. Tutorial sui comandi per utenti Linux per principianti (con esempi)

  3. Introduzione a sed (Stream Editor):utili esempi di comandi sed

  4. 10 Esempi di comandi Sed (Stream Editor).

  5. Esempi di comandi sed in Linux

Esercitazione sui comandi OD Linux per principianti (6 esempi)

Linux w Command Tutorial per principianti (5 esempi)

Tutorial sui comandi Linux ss per principianti (8 esempi)

Comando di localizzazione Linux per principianti (8 esempi)

Micro:un editor di testo basato su riga di comando per Linux

Utilizzo del comando Linux sed con esempi