Come si eseguono più sostituzioni di sed

Come si eseguono più sostituzioni di sed
Il comando SED (Stream Editor) può eseguire varie funzioni sui flussi in Unix/Linux. Ad esempio: ricerca, ricerca e sostituzione, inserimento/eliminazione, ecc. Tuttavia, viene utilizzato principalmente per trovare e sostituire i testi. Il comando SED consente di modificare i file senza aprirli. Perché è uno strumento di comando, può anche essere implementato negli script.

In questa guida, mostreremo come eseguire i numerosi sostituti di sed in un singolo file.

Sostituzione del testo usando sed

Creazione di un testo di esempio
Il comando SED gestisce un'attività definita su un flusso. A fini dimostrativi, creeremo un file fittizio per fungere da flusso. Crea un file di testo usando il seguente comando:

gatto < test.txt
la rapida volpe marrone
salta sopra il cane pigro
Eof

Controllare il contenuto del file utilizzando il comando seguente:

$ cat test.TXT

Sostituzione del testo
Per sostituire i testi, la struttura di comando generale è la seguente:

$ sed 's /// g'

Qui, SED cerca il modello specificato nel flusso dato e sostituirlo con il testo di sostituzione dato. Il flag G garantisce che SED cerca l'intero testo per i pattern corrispondenti.

Proviamolo sul nostro file demo. Esegui il seguente comando:

Test di $ sed 's/the/hello/g'.TXT

Eseguendo più sostituzioni

Nell'ultimo esempio, abbiamo sostituito un singolo modello di testo. E se volessi sostituire più motivi?

Ci sono un paio di modi diversi per farlo. Possiamo farlo all'interno di un singolo comando SED o dividerlo in più.

Sostituzioni multiple in un singolo comando SED
Possiamo passare le espressioni multiple a sed usando il flag -e. Dai un'occhiata al seguente esempio:

$ sed -e 's/the/hello/g' -e 's/lazy/stance/' test.TXT

Qui, la prima espressione sostituisce "The" con "ciao". La seconda espressione sostituisce "pigro" con "stanco".

Invece di dichiarare più espressioni, possiamo anche combinarli in una singola espressione, ogni parte separata da un punto e virgola (;). Dai un'occhiata al seguente esempio:

$ sed -e 's/the/hello/g; s/lazy/stance/' test.TXT

Se stai eseguendo lo stesso set di comandi SED più e più volte, possiamo metterli in un singolo file. Possiamo passare il file come fonte di comandi a sed usando il flag -f. La struttura di comando assomiglia a qualcosa di seguente:

$ sed -f

Mettiamolo in azione. Abbiamo compilato tutti i comandi SED che vogliamo eseguire nei comandi del file.TXT.

Comandi di $ Cat.TXT

Si noti che ogni espressione SED unica è posizionata in una nuova linea per migliorare la chiarezza visiva. Tuttavia, puoi anche usare la tecnica di Semicolon per unire tutte le espressioni in un'unica espressione.

Ora, possiamo specificare questo file su Sed come elenco di espressioni da eseguire sul flusso dato:

comandi $ sed -f.test txt.TXT

Multi multipli SED SEDEDI con più comandi SED
Questo è un approccio più semplice. Invece di usare qualsiasi trucco di fantasia, filtriamo il flusso usando un comando SED e passiamo l'output agli altri comandi SED.

Dai un'occhiata al seguente esempio:

Test di $ sed 's/the/hello/g'.txt | Sed 'S/Lazy/Stange/'

Qui, il primo comando sed sostituisce "il" con "ciao". L'uscita viene quindi convogliata al secondo comando SED che sostituisce "pigro" con "stanco".

Mentre questo metodo è semplice, può diventare ridondante molto facilmente, soprattutto se è necessario eseguire più espressioni SED. In tal caso, l'uso del file di comando SED è il modo più efficiente.

Conclusione

In questa guida, abbiamo esplorato i vari modi su come possiamo eseguire le sostituzioni multiple usando SED. Abbiamo dimostrato come superare le espressioni multiple usando il flag -e. Abbiamo ulteriormente compresso le espressioni multiple in una singola espressione usando i punti e virgola. Per un carico di lavoro più ripetitivo, abbiamo anche dimostrato l'uso di un file di testo per eseguire contemporaneamente le più espressioni SED.

Infine, abbiamo esplorato l'uso di SED in un modo semplice: pipì l'output di un comando SED a un altro.

In questa guida, i comandi SED non cambiano effettivamente il contenuto del file. Ulteriori informazioni sull'uso di SED per modificare i file sul posto.

Felice calcolo!