Come inserire una riga dopo la corrispondenza usando `sed`?

How Insert Line After Match Using Sed



Uno dei comandi utili e potenti di Linux è il comando sed. Questo comando viene utilizzato per eseguire diversi tipi di attività in Linux, come inserire, aggiornare ed eliminare un particolare testo o riga in base alla corrispondenza. Puoi inserire un testo in una stringa o in un file in diversi modi usando il comando sed.

Come inserire una riga dopo aver trovato una corrispondenza in una stringa o in una riga è mostrato in questo tutorial.







Inserisci una riga nella stringa

È possibile inserire una nuova riga dopo qualsiasi valore stringa utilizzando il comando sed se il modello definito nel comando corrisponde a qualsiasi parte del valore stringa.



L'esempio seguente mostra come è possibile aggiungere una nuova riga dopo un valore stringa se una particolare stringa esiste in un punto qualsiasi del valore stringa.



Esempio 1: inserire una riga in una stringa dopo aver trovato una corrispondenza

Il seguente comando cercherà inng nella stringa, mi piace programmare e una riga di testo, ti piace programmare? verrà inserito dopo la stringa se la stringa di ricerca esiste.





Qui, il carattere & viene utilizzato per inserire la riga dopo la stringa.

$buttato fuori 'Mi piace programmare.' | sed 's / inng / & Ti piace programmare? / '

L'output seguente mostra che inng non esiste nella stringa e non viene inserita alcuna riga dopo la stringa.




Il seguente comando cercherà ing. nella stringa, mi piace programmare ed esiste nella stringa.

$buttato fuori 'Mi piace programmare.' | sed 's/ing./& Ti piace programmare?/'

L'output seguente mostra che la nuova riga viene aggiunta dopo la stringa.

Inserisci una riga in un file

Esistono due modi per inserire una riga dopo che è stata trovata una corrispondenza in un file menzionato di seguito. Quando il comando sed viene utilizzato senza l'opzione -i, il contenuto del file rimarrà invariato e l'output mostrerà il contenuto del file con la nuova riga inserita. Devi usare l'opzione -i con il comando sed per inserire la nuova riga in modo permanente nel file se il modello corrispondente esiste nel file.

A. Utilizzo di a nel comando sed

La a può essere utilizzata nel modello di ricerca del sed per aggiungere una o più righe in un file dopo la riga in cui il modello di ricerca corrisponde o dopo un particolare numero di riga.

B. Utilizzo di i nel comando sed

La i può essere utilizzata nel modello di ricerca del comando sed per inserire una o più righe in un file prima della riga in cui corrisponde il modello di ricerca.

Inserisci le righe in un file in base al modello:

Crea un file di testo delimitato da tabulazioni chiamato prodotti.txt con il seguente contenuto per mostrare gli usi del flag sopra nel comando sed.

prodotti.txt

Nome ID

01 Montare la panna

02 Cacao in Polvere

03 Zucchero

04 Uovo

05 Farina

Esempio 2: inserire una riga dopo un particolare numero di riga utilizzando a

I seguenti comandi mostrano come è possibile aggiungere una nuova riga, dopo un particolare numero di riga del file products.txt, in base al pattern utilizzato nel comando sed.

Qui, il primo comando mostrerà il contenuto esistente del file. Il comando sed aggiungerà il testo, b01 Baking powder, dopo le prime due righe del file. L'ultimo comando viene utilizzato per verificare che il contenuto del file sia stato modificato o meno.

$gattoprodotti.txt

$sed '2 a b01 lievito in polvere'prodotti.txt

$gattoprodotti.txt

Il seguente output apparirà dopo aver eseguito il comando precedente.

Esempio 3: inserire una riga dopo l'ultima riga utilizzando a

Il comando seguente mostra come aggiungere una nuova riga dopo l'ultima riga del file. Il primo e l'ultimo comando mostrano il contenuto esistente del file prima e dopo l'esecuzione del comando sed. Il simbolo $ viene utilizzato nel modello del comando sed per menzionare l'ultima riga del file.

$gattoprodotti.txt

$sed '$ a b01 lievito in polvere'prodotti.txt

$gattoprodotti.txt

Il seguente output apparirà dopo aver eseguito il comando precedente.

Esempio 4: inserire una riga in un punto qualsiasi del file dopo aver abbinato un modello utilizzando a

Il seguente comando sed mostra come è possibile aggiungere una nuova riga in qualsiasi punto del file in base al modello corrispondente. Il modello utilizzato nel comando sed cercherà qualsiasi riga che inizia con s01 e aggiungerà la nuova stringa dopo di essa. La quarta riga del file inizia con s01 e la nuova riga verrà inserita dopo quella riga.

$gattoprodotti.txt

$sed '/^s01.*/a b01 Bicarbonato in polvere'prodotti.txt

$gattoprodotti.txt

Il seguente output apparirà dopo aver eseguito il comando.


Il seguente comando sed cercherà qualsiasi riga che termina con Powder e inserirà la nuova riga dopo di essa. La terza riga del file termina con Powder. Quindi, la nuova riga verrà inserita dopo quella riga.

$gattoprodotti.txt

$sed '/Polvere$/a b01 Bicarbonato'prodotti.txt

$gattoprodotti.txt

Il seguente output apparirà dopo aver eseguito i comandi precedenti.

Esempio-5: inserire più righe dopo il motivo corrispondente utilizzando a

Il seguente comando sed mostra come aggiungere più righe all'interno del contenuto di un file in base al modello corrispondente.

Qui, verranno aggiunte due righe dopo la terza riga, secondo lo schema.

$gattoprodotti.txt

$sed '/^[a-c]/a b01 Bicarbonato in polvere b02 Bicarbonato di sodio'prodotti.txt

$gattoprodotti.txt

Il seguente output apparirà dopo aver eseguito i comandi precedenti.

Esempio 6: inserire una linea dopo aver abbinato un motivo utilizzando I

$gattoprodotti.txt

$sed '/crema/i b01 lievito in polvere'prodotti.txt

$gattoprodotti.txt

Il seguente output apparirà dopo aver eseguito i comandi precedenti.

Esempio-7: inserire una riga in modo permanente dopo il modello corrispondente utilizzando l'opzione -i

Il seguente comando sed mostra come modificare il contenuto del file in modo permanente. L'opzione i viene utilizzata con il comando sed per inserire una nuova riga nel file in base al modello.

$gattoprodotti.txt

$sed -io '/e$/a g01 Ghee'prodotti.txt

$gattoprodotti.txt

Il seguente output apparirà dopo aver eseguito i comandi precedenti.

Conclusione:

Le modalità di inserimento di due o più righe in un file utilizzando il comando sed con motivo sono state mostrate in questo tutorial per aiutare il lettore ad applicare questo comando per l'inserimento temporaneo o permanente di righe in base allo schema.