“Nell'ecosistema UNIX/Linux, il comando SED è uno strumento dedicato per la modifica dei flussi, da cui il nome (Editor Stream). Riceve gli input di testo come "flussi" ed esegue le operazioni specificate sul flusso."
In questa guida, esploreremo l'esecuzione della modifica dei file sul posto con SED.
Prerequisiti
Per eseguire i passaggi dimostrati in questa guida, avrai bisogno dei seguenti componenti:
Modifica del flusso usando SED
Innanzitutto, diamo una breve occhiata a come funziona SED. La struttura di comando di SED è la seguente:
$ sed
Il seguente comando mette in mostra un semplice flusso di lavoro di SED:
$ echo "The Quick Brown Fox" | sed -e 's/veloce/veloce/'
Qui,
E se volessimo modificare i testi di un file di testo? Il comando SED può anche funzionare utilizzando i file di testo come flusso. Per dimostrazione, ho preso il seguente file di testo:
DEMO $ CAT.TXT
Il seguente comando SED sostituirà tutte le istanze di IL con da:
demo $ sed -e 's/the/da/g'.TXT
Controlla il contenuto di Demo.TXT Per le modifiche:
DEMO $ CAT.TXT
Dall'ultimo esempio, possiamo vedere che SED ha stampato solo il flusso risultante sulla console. Il file di origine (Demo.TXT) non è stato toccato.
Modifica dei file sul posto utilizzando SED
Come dimostrato dall'esempio precedente, l'azione predefinita di SED è stampare il contenuto modificato sullo schermo. È un'ottima funzionalità che può impedire le modifiche accidentali ai file. Tuttavia, se volessimo salvare le modifiche al file, dovevamo fornire alcune opzioni aggiuntive.
Una tecnica semplice e comune sarebbe sostituire il contenuto del file con sed produzione. Dai un'occhiata al seguente comando:
DEMO $ CAT.txt | sed 's/the/da/g' | DEMO TEE.TXT
Qui, stiamo sovrascrivendo il contenuto di Demo.TXT con l'output da sed comando.
Mentre il comando funziona come previsto, richiede di digitare ulteriori codici. Abbiamo coinvolto i comandi di gatto e tee insieme al comando SED. Bash è anche coinvolto nel reindirizzamento delle uscite. Pertanto, il comando è più ad alta intensità di risorse di quanto deve essere.
Per risolvere questo problema, possiamo utilizzare la funzione di modifica sul posto di SED. In questa modalità, sed cambierà direttamente il contenuto del file. Per invocare la modalità di modifica sul posto, dobbiamo usare il -io O -a posto bandiera. Il seguente sed Il comando lo implementa:
$ sed -inplace -e 's/the/da/g' demo.TXT
Controllo Demo.TXT Per le modifiche:
DEMO $ CAT.TXT
Come puoi vedere, il contenuto del file viene modificato senza aggiungere ulteriori componenti.
Pensieri finali
In questa guida, abbiamo dimostrato con successo l'esecuzione di modifiche sul posto sui file di testo utilizzando sed. Mentre Sed stesso è un programma semplice, la principale fonte di potere risiede nella sua capacità di incorporare espressioni regolari. Regex consente di descrivere modelli molto complessi che agiscono. Dai un'occhiata a Regex in sed per imparare di più in profondità.
In alternativa, è possibile utilizzare gli script bash per filtrare e modificare il contenuto di un file. In effetti, puoi incorporare SED negli script per perfezionare il contenuto di testo. Dai un'occhiata a questa guida sull'inizio con Bash Scripting.
Felice calcolo!