Kako vstaviti vrstico po ujemanju z `sed`?

How Insert Line After Match Using Sed



Eden od uporabnih in zmogljivih ukazov Linuxa je ukaz sed. Ta ukaz se uporablja za izvajanje različnih vrst nalog v Linuxu, na primer vstavljanje, posodabljanje in brisanje določenega besedila ali vrstice na podlagi ujemanja. Besedilo v niz ali datoteko lahko vstavite na različne načine z ukazom sed.

Kako vstaviti vrstico po iskanju ujemanja v nizu ali vrstici, je prikazano v tej vadnici.







Vnesite vrstico v niz

Novo vrstico lahko vnesete za katero koli vrednostjo niza z ukazom sed, če se vzorec, definiran v ukazu, ujema s katerim koli delom vrednosti niza.



Naslednji primer prikazuje, kako je mogoče dodati novo vrstico po vrednosti niza, če določen niz obstaja kjer koli v vrednosti niza.



Primer-1: Vstavite vrstico v niz po iskanju ujemanja

Naslednji ukaz bo iskal inng v nizu, všeč mi je programiranje in vrstica besedila. Ali vam je všeč programiranje? bo vstavljen za niz, če iskalni niz obstaja.





Tu se znak & uporablja za vstavljanje vrstice za nizom.

$vrgel ven 'Všeč mi je programiranje.' | sed 's / inng / & Ali vam je všeč programiranje? /'

Naslednji izhod kaže, da inng ne obstaja v nizu in za nizom ni vstavljena nobena vrstica.




Naslednji ukaz bo iskal ing. v nizu mi je všeč programiranje in obstaja v nizu.

$vrgel ven 'Všeč mi je programiranje.' | sed 's/ing ./& Ali vam je všeč programiranje?/'

Naslednji izhod prikazuje, da je nova vrstica dodana za nizom.

Vstavite vrstico v datoteko

Obstajata dva načina za vstavljanje vrstice, potem ko je ujemanje v datoteki, ki je navedena spodaj. Ko uporabite ukaz sed brez možnosti -i, bo vsebina datoteke ostala nespremenjena, izhod pa bo prikazal vsebino datoteke z vstavljeno novo vrstico. Če želite v datoteko vnesti novo vrstico, morate z ukazom sed uporabiti možnost -i.

A. Uporaba a v ukazu sed

A se lahko uporabi v iskalnem vzorcu sed za dodajanje ene ali več vrstic v datoteko po vrstici, kjer se ujema vzorec iskanja, ali po določeni številki vrstice.

B. Z uporabo i v ukazu sed

I lahko uporabite v iskalnem vzorcu ukaza sed za vstavljanje ene ali več vrstic v datoteko pred vrstico, kjer se iskalni vzorec ujema.

V datoteko vstavite vrstice na podlagi vzorca:

Ustvarite besedilno datoteko, ločeno z zavihki, z imenom products.txt z naslednjo vsebino za prikaz uporabe zgornje zastave v ukazu sed.

products.txt

ID ID

01 Stepena smetana

02 Kakavov prah

03 Sladkor

04 jajce

05 Moka

Primer 2: Vnesite vrstico za določeno številko vrstice z uporabo a

Naslednji ukazi prikazujejo, kako je mogoče po določeni številki vrstice datoteke products.txt dodati novo vrstico na podlagi vzorca, uporabljenega v ukazu sed.

Tu bo prvi ukaz prikazal obstoječo vsebino datoteke. Ukaz sed bo po prvih dveh vrsticah datoteke dodal besedilo, b01 Pecilni prašek. Zadnji ukaz se uporablja za preverjanje, ali je vsebina datoteke spremenjena ali ne.

$mačkaproducts.txt

$sed '2 a b01 t Pecilni prašek'products.txt

$mačkaproducts.txt

Po zagonu zgornjega ukaza se prikaže naslednji izhod.

Primer 3: Vstavite vrstico za zadnjo vrstico z uporabo a

Naslednji ukaz prikazuje način dodajanja nove vrstice po zadnji vrstici datoteke. Prvi in ​​zadnji ukaz prikazuje obstoječo vsebino datoteke pred in po izvedbi ukaza sed. Simbol $ se uporablja v vzorcu ukaza sed za omembo zadnje vrstice datoteke.

$mačkaproducts.txt

$sed '$ a b01 t Pecilni prašek'products.txt

$mačkaproducts.txt

Po zagonu zgornjega ukaza se prikaže naslednji izhod.

Primer 4: Vstavite vrstico kjer koli v datoteki, potem ko ujemate vzorec s pomočjo a

Naslednji ukaz sed prikazuje, kako je mogoče na podlagi ujemajočega se vzorca dodati novo vrstico kjer koli v datoteki. Vzorec, uporabljen v ukazu sed, bo iskal po vseh vrsticah, ki se začnejo s s01, in po njem dodal nov niz. Četrta vrstica datoteke se začne s s01, nova vrstica pa bo vstavljena za to vrstico.

$mačkaproducts.txt

$sed '/^s01.*/a b01 tPecilni prašek'products.txt

$mačkaproducts.txt

Po zagonu ukaza se prikaže naslednji izhod.


Naslednji ukaz sed bo iskal vsako vrstico, ki se konča s Powder, in za njo vstavil novo vrstico. Tretja vrstica datoteke se konča s praškom. Nova vrstica bo torej vstavljena za to vrstico.

$mačkaproducts.txt

$sed '/Powder $/a b01 tPecilni prah'products.txt

$mačkaproducts.txt

Po zagonu zgornjih ukazov se prikaže naslednji izhod.

Primer 5: Vstavite več vrstic po ujemajočem se vzorcu z uporabo

Naslednji ukaz sed prikazuje način dodajanja več vrstic v vsebino datoteke na podlagi ujemajočega se vzorca.

Tu se po tretji vrstici dodata dve vrstici, glede na vzorec.

$mačkaproducts.txt

$sed '/^[a-c]/a b01 t pecilni prašek nb02 t pecilni soda'products.txt

$mačkaproducts.txt

Po zagonu zgornjih ukazov se prikaže naslednji izhod.

Primer-6: po ujemanju vzorca s črko I vnesite vrstico

$mačkaproducts.txt

$sed '/cream/i b01 tPecilni prašek'products.txt

$mačkaproducts.txt

Po zagonu zgornjih ukazov se prikaže naslednji izhod.

Primer -7: trajno vnesite vrstico po ujemajočem se vzorcu z možnostjo -i

Naslednji ukaz sed prikazuje, kako trajno spremeniti vsebino datoteke. Možnost i se uporablja z ukazom sed za vstavljanje nove vrstice v datoteko na podlagi vzorca.

$mačkaproducts.txt

$sed -jaz '/e $/a g01 tGi'products.txt

$mačkaproducts.txt

Po zagonu zgornjih ukazov se prikaže naslednji izhod.

Zaključek:

Načini vstavljanja dveh ali več vrstic v datoteko z uporabo ukaza sed z vzorcem so bili prikazani v tej vadnici, da bi bralcu pomagali uporabiti ta ukaz za začasno ali trajno vstavljanje vrstic na podlagi vzorca.