In Unix/Linux, SED è un comando dedicato per la modifica dei flussi. Questo è dove arriva il nome del comando (editor di stream). Prende un flusso come input, filtra e ne trasforma il contenuto e emette il risultato come indicato.
In questa guida, daremo uno sguardo all'utilizzo di SED con le espressioni regolari (regex in breve) per sostituire il contenuto in un file di testo. Questa guida utilizzerà la versione GNU/Linux di SED.
Afferrare un file di testo di esempio
A fini dimostrativi, creiamo un semplice file di testo con un po 'di testo per praticare i nostri comandi SED. Crea un file di testo usando Nano:
$ nano sed-pratice.TXT
All'interno del file, immettere il seguente testo:
#!/Bin/Bash
Echo "The Quick Brown Fox"
Echo "salta sopra il cane pigro"
Sostituzione di testi usando sed
La struttura di comando principale di SED per sostituire i testi è la seguente:
$ sed -i 's /// g'
Qui:
Proviamolo. Nel seguente esempio, sostituiamo IL con IL Nella pratica sed.TXT:
$ sed -i 's/the/the/g' sed -practice.TXT
Verificare le modifiche.
$ cat sed-pratice.TXT
Come puoi vedere, abbiamo modificato correttamente il contenuto del file.
Lavorare con i personaggi delimitanti
Come descritto nella sezione precedente, le istruzioni SED sono dotate di caratteri delimitanti per separare le varie parti. Se vogliamo sostituire i testi che contengono il carattere delimitatore, dobbiamo usare la backslash (\) per sfuggirlo.
Diamo un'occhiata al seguente esempio:
$ sed -i 's/\/bin \/bash/\/usr \/bin \/zsh/g' sed -practice.TXT
Qui, sostituiamo/bin/bash con/usr/bin/zsh. Verifica se il tentativo ha successo.
$ cat sed-pratice.TXT
Usando questo modello a zig -zag di avanti e indietro, può facilmente diventare estremamente confuso. Ecco perché è una pratica comune usare altri delimitatori come il colon (:) o barra verticale (|). Riscriviamo il comando usando la barra verticale come delimitatore:
$ sed -i 's |/usr/bin/zsh |/bin/bash | g' sed -practice.TXT
Set di caratteri regex
Possiamo usare i set di caratteri per descrivere una serie di caratteri da sostituire in SED. Ecco alcuni set di caratteri comuni che incontrerai:
Nel seguente esempio, sostituiamo tutte le cifre con l'alfabeto. Dai un'occhiata al seguente esempio:
$ echo 1001001 | sed -e 's | [0-9] | k | g'
Qui, SED sostituisce tutte le cifre (1 e 0, in questo caso) trova con la lettera K.
E se vogliamo sostituire 1 con A e 0 con B? Ecco un modo per raggiungere questo obiettivo:
$ echo 1001001 | sed -e 's | 1 | a | g' | sed -e 's | 0 | b | g'
Qui, il primo comando SED sostituisce 1 con a. L'uscita viene quindi condotta a un secondo comando sed che sostituisce 0 con b.
Conclusione
In questa guida, abbiamo dimostrato brevemente i vari modi di usare SED per trovare e sostituire i testi. Con l'aiuto di Regex, siamo stati in grado di perfezionare la ricerca e sostituire il contenuto esatto. Ulteriori informazioni su Sed Regex.
Con l'aiuto di alcuni strumenti aggiuntivi come Find, possiamo usare SED per modificare anche i file di un'intera directory.
Possiamo anche implementare SED negli script bash per eseguire un editing più complesso di flusso. Ulteriori informazioni sul viaggio di partenza con Bash Scripting.