Sed in atto file di modifica

Sed in atto file di modifica

“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:

    • Qualsiasi moderna distribuzione unix/linux. Per questa guida, userò Ubuntu 20.04 LTS in esecuzione su virtualbox.
    • Un emulatore terminale adatto, preferibilmente con evidenziazione di sintassi. Dai un'occhiata ad alcuni dei migliori emulatori di terminali su Linux.

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,

    • Il comando Echo stampa la stringa Stdout. Ulteriori informazioni su Stdin, StDout e Stderr.
    • Stiamo pipendo l'output al sed Qui, Stdout è il flusso sed che eseguirà l'attività specificata.
    • IL sed Il comando, come specificato, cercherà qualsiasi istanza della parola presto e sostituirlo con veloce. Il flusso risultante verrà stampato sulla console.

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!