Com inserir una línia després del partit amb `sed`?

How Insert Line After Match Using Sed



Una de les ordres útils i potents de Linux és l'ordre sed. Aquesta ordre s'utilitza per realitzar diferents tipus de tasques a Linux, com ara inserir, actualitzar i suprimir un text o línia en funció de la coincidència. Podeu inserir un text en una cadena o un fitxer de diferents maneres mitjançant l'ordre sed.

En aquest tutorial es mostra com inserir una línia després de trobar una coincidència en una cadena o una línia.







Inseriu una línia a la cadena

Es pot inserir una nova línia després de qualsevol valor de cadena mitjançant l'ordre sed si el patró definit a l'ordre coincideix amb qualsevol part del valor de la cadena.



L'exemple següent mostra com es pot afegir una nova línia després d'un valor de cadena si existeix una cadena en concret en qualsevol lloc del valor de la cadena.



Exemple-1: inseriu una línia en una cadena després de trobar una coincidència

La següent ordre cercarà ing a la cadena, m'agrada programar i una línia de text, us agrada programar? s'inserirà després de la cadena si existeix la cadena de cerca.





Aquí, el caràcter & s'utilitza per inserir la línia després de la cadena.

$trobo 'M'agrada programar'. | sed 's / inng / & T'agrada programar? /'

La sortida següent mostra que inng no existeix a la cadena i que no s’insereix cap línia després de la cadena.




L'ordre següent cercarà ing. a la cadena, m'agrada programar i existeix a la cadena.

$trobo 'M'agrada programar'. | sed 's / ing ./& T'agrada programar? /'

La sortida següent mostra que la nova línia s'afegeix després de la cadena.

Inseriu una línia en un fitxer

Hi ha dues maneres d’inserir una línia després de trobar una coincidència en un fitxer que s’esmenta a continuació. Quan s'utilitza l'ordre sed sense l'opció -i, el contingut del fitxer es mantindrà sense canvis i la sortida mostrarà el contingut del fitxer amb la nova línia inserida. Heu d'utilitzar l'opció -i amb l'ordre sed per inserir la nova línia permanentment al fitxer si el patró de coincidència existeix al fitxer.

A. Utilització d'un a l'ordre sed

L'a es pot utilitzar en el patró de cerca del sed per afegir una o més línies en un fitxer després de la línia on coincideix el patró de cerca o després d'un número de línia concret.

B. Utilitzant i a l'ordre sed

La i es pot utilitzar al patró de cerca de l'ordre sed per inserir una o més línies en un fitxer abans de la línia on coincideix el patró de cerca.

Inseriu línies en un fitxer basat en el patró:

Creeu un fitxer de text delimitat per tabulacions products.txt amb el contingut següent per mostrar els usos de la bandera anterior a l'ordre sed.

products.txt

Nom de l'identificador

01 Nata de fuet

02 Cacau en Pols

03 Sucre

04 Ou

05 Farina

Exemple-2: Inseriu una línia després d'un número de línia particular mitjançant l'ajuda

Les ordres següents mostren com es pot afegir una nova línia, després d'un número de línia concret del fitxer products.txt, segons el patró utilitzat a l'ordre sed.

Aquí, la primera ordre mostrarà el contingut existent del fitxer. L'ordre sed afegirà el text, b01 Pols de coure, després de les dues primeres línies del fitxer. L'última ordre s'utilitza per comprovar que el contingut del fitxer s'ha canviat o no.

$gatproducts.txt

$sed '2 a b01 tPolvo de coure'products.txt

$gatproducts.txt

La següent sortida apareixerà després d'executar l'ordre anterior.

Exemple-3: Inseriu una línia després de la darrera línia utilitzant el fitxer a

L'ordre següent mostra la manera d'afegir una nova línia després de l'última línia del fitxer. La primera i l'última ordre mostra el contingut existent del fitxer abans i després d'executar l'ordre sed. El símbol $ s'utilitza en el patró de l'ordre sed per esmentar l'última línia del fitxer.

$gatproducts.txt

$sed '$ a b01 tPolvo de coure'products.txt

$gatproducts.txt

La següent sortida apareixerà després d'executar l'ordre anterior.

Exemple-4: Inseriu una línia en qualsevol lloc del fitxer després de coincidir amb un patró mitjançant el fitxer a

L'ordre sed següent mostra com es pot afegir una nova línia a qualsevol lloc del fitxer en funció del patró de coincidència. El patró utilitzat a l'ordre sed buscarà qualsevol línia que comenci amb s01 i afegirà la nova cadena després. La quarta línia del fitxer comença amb s01 i la nova línia s'inserirà després d'aquesta línia.

$gatproducts.txt

$sed '/^s01.*/a b01 t Pols de coure'products.txt

$gatproducts.txt

La següent sortida apareixerà després d'executar l'ordre.


L'ordre sed següent cercarà qualsevol línia que acabi amb Powder i inserirà la nova línia després. La tercera línia del fitxer acaba amb Powder. Per tant, la nova línia s'inserirà després d'aquesta línia.

$gatproducts.txt

$sed '/ Powder $ / a b01 tPolvor de forn'products.txt

$gatproducts.txt

La següent sortida apareixerà després d'executar les ordres anteriors.

Exemple-5: Inseriu diverses línies després del patró coincident mitjançant un

L'ordre sed següent mostra la manera d'afegir diverses línies dins del contingut d'un fitxer en funció del patró de coincidència.

Aquí, s'afegiran dues línies després de la tercera línia, segons el patró.

$gatproducts.txt

$sed '/ ^ [a-c] / a b01 tPols al forn nb02 tSoda bicarbonada'products.txt

$gatproducts.txt

La següent sortida apareixerà després d'executar les ordres anteriors.

Exemple-6: inseriu una línia després de coincidir amb un patró mitjançant la I

$gatproducts.txt

$sed '/ cream / i b01 tPolvo de coure'products.txt

$gatproducts.txt

La següent sortida apareixerà després d'executar les ordres anteriors.

Exemple-7: inseriu una línia permanentment després del patró de coincidència mitjançant l'opció -i

L'ordre sed següent mostra com canviar el contingut del fitxer permanentment. L'opció i s'utilitza amb l'ordre sed per inserir una nova línia al fitxer en funció del patró.

$gatproducts.txt

$sed -i '/ e $ / a g01 tGhee'products.txt

$gatproducts.txt

La següent sortida apareixerà després d'executar les ordres anteriors.

Conclusió:

Les formes d’inserir dues o més línies en un fitxer mitjançant l’ordre sed amb patró s’han mostrat en aquest tutorial per ajudar el lector a aplicar aquesta ordre per inserir línies temporalment o permanentment en funció del patró.