Kako umetnuti redak nakon podudaranja pomoću `sed`?

How Insert Line After Match Using Sed

Jedna od korisnih i moćnih naredbi Linuxa je naredba sed. Ova se naredba koristi za izvršavanje različitih vrsta zadataka u Linuxu, poput umetanja, ažuriranja i brisanja određenog teksta ili retka na temelju podudaranja. Pomoću naredbe sed možete umetnuti tekst u niz ili datoteku na različite načine.

U ovom vodiču prikazano je kako umetnuti redak nakon pronalaska podudaranja u nizu ili retku.



Umetnite redak u niz

Novi redak može se umetnuti nakon bilo koje vrijednosti niza pomoću naredbe sed ako se uzorak definiran u naredbi podudara s bilo kojim dijelom vrijednosti niza.



Sljedeći primjer pokazuje kako se novi redak može dodati nakon vrijednosti niza ako određeni niz postoji bilo gdje u vrijednosti niza.



Primjer-1: Umetnite redak u niz nakon što pronađete podudarnost

Sljedeća će naredba pretraživati ​​inng u nizu, sviđa mi se programiranje i redak teksta. Sviđa li vam se programiranje? bit će umetnut nakon niza ako niz za pretraživanje postoji.

Ovdje se znak & koristi za umetanje retka nakon niza.

$izbaciti 'Volim programirati.' | sed 's / inng / & Volite li programiranje? /'

Sljedeći izlaz pokazuje da inng ne postoji u nizu i da se nakon niza ne umeće redak.




Sljedeća će naredba pretraživati ​​ing. u nizu, volim programiranje i postoji u nizu.

$izbaciti 'Volim programirati.' | sed 's/ing ./& Volite li programiranje?/'

Sljedeći izlaz pokazuje da se novi niz dodaje nakon niza.

Umetnite redak u datoteku

Postoje dva načina za umetanje retka nakon što se podudaranje pronađe u datoteci koja je dolje navedena. Kada se naredba sed koristi bez opcije -i, sadržaj datoteke će ostati nepromijenjen, a izlaz će pokazati sadržaj datoteke s umetnutim novim retkom. Morate koristiti opciju -i s naredbom sed da biste trajno umetnuli novi redak u datoteku ako u datoteci postoji odgovarajući uzorak.

O. Korištenje a u sed naredbi

A se može koristiti u uzorku pretraživanja sed za dodavanje jednog ili više redaka u datoteku nakon retka gdje se uzorak pretraživanja podudara ili nakon određenog broja retka.

B. Korištenje i u naredbi sed

I se može koristiti u uzorku pretraživanja naredbe sed za umetanje jednog ili više redaka u datoteku prije retka gdje se uzorak pretraživanja podudara.

Umetnite retke u datoteku na temelju uzorka:

Izradite tekstualnu datoteku s oznakom razgraničenom pod nazivom products.txt sa sljedećim sadržajem za prikaz uporabe gornje zastavice u naredbi sed.

products.txt

Naziv osobne iskaznice

01 Vrhnje od šlaga

02 Kakao u prahu

03 Šećer

04 Jaje

05 Brašno

Primjer-2: Umetnite redak iza određenog broja retka pomoću a

Sljedeće naredbe pokazuju kako se može dodati novi redak, nakon određenog broja retka datoteke products.txt, na temelju uzorka koji se koristi u naredbi sed.

Ovdje će prva naredba pokazati postojeći sadržaj datoteke. Naredba sed će dodati tekst, b01 Prašak za pecivo, nakon prva dva retka datoteke. Posljednja naredba koristi se za provjeru je li sadržaj datoteke promijenjen ili nije.

$mačkaproducts.txt

$sed '2 a b01 tPerh za pecivo'products.txt

$mačkaproducts.txt

Sljedeći izlaz pojavit će se nakon pokretanja gornje naredbe.

Primjer-3: Umetnite redak nakon zadnjeg retka pomoću a

Sljedeća naredba prikazuje način dodavanja novog retka nakon zadnjeg retka datoteke. Prva i posljednja naredba prikazuje postojeći sadržaj datoteke prije i nakon izvođenja naredbe sed. Simbol $ koristi se u uzorku naredbe sed za spominjanje posljednjeg retka datoteke.

$mačkaproducts.txt

$sed '$ a b01 tPerh za pecivo'products.txt

$mačkaproducts.txt

Sljedeći izlaz pojavit će se nakon pokretanja gornje naredbe.

Primjer-4: Umetnite redak bilo gdje u datoteci nakon podudaranja uzorka pomoću a

Sljedeća naredba sed prikazuje kako se novi redak može dodati bilo gdje u datoteci na temelju odgovarajućeg uzorka. Uzorak koji se koristi u naredbi sed pretražit će bilo koji redak koji počinje s s01, i dodati novi niz nakon njega. Četvrti redak datoteke počinje s s01, a novi redak bit će umetnut nakon tog retka.

$mačkaproducts.txt

$sed '/^s01.*/a b01 tPekar u prahu'products.txt

$mačkaproducts.txt

Nakon izvođenja naredbe pojavit će se sljedeći izlaz.


Sljedeća naredba sed pretražit će svaki redak koji završava s Powder i umetnuti novi redak iza njega. Treći redak datoteke završava s praškom. Dakle, novi će redak biti umetnut nakon tog retka.

$mačkaproducts.txt

$sed '/Prah $/a b01 tPuh u prahu'products.txt

$mačkaproducts.txt

Sljedeći izlaz pojavit će se nakon pokretanja gornjih naredbi.

Primjer-5: Umetnite više redaka nakon odgovarajućeg uzorka pomoću a

Sljedeća naredba sed prikazuje način dodavanja više redaka unutar sadržaja datoteke na temelju odgovarajućeg uzorka.

Ovdje će se dodati dva retka nakon trećeg retka, prema uzorku.

$mačkaproducts.txt

$sed '/^[a-c]/a b01 t Prašak za pecivo nb02 tSoda bikarbona'products.txt

$mačkaproducts.txt

Sljedeći izlaz pojavit će se nakon pokretanja gornjih naredbi.

Primjer-6: umetnite redak nakon podudaranja uzorka pomoću I

$mačkaproducts.txt

$sed '/cream/i b01 tPerh za pecivo'products.txt

$mačkaproducts.txt

Sljedeći izlaz pojavit će se nakon pokretanja gornjih naredbi.

Primjer -7: Trajno umetnite redak nakon odgovarajućeg uzorka pomoću opcije -i

Sljedeća naredba sed prikazuje kako trajno promijeniti sadržaj datoteke. Opcija i koristi se sa naredbom sed za umetanje novog retka u datoteku na temelju uzorka.

$mačkaproducts.txt

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

$mačkaproducts.txt

Sljedeći izlaz pojavit će se nakon pokretanja gornjih naredbi.

Zaključak:

Načini umetanja dva ili više redaka u datoteku pomoću naredbe sed s uzorkom prikazani su u ovom vodiču kako bi čitatelju pomogli da primijeni ovu naredbu za privremeno ili trajno umetanje redaka na temelju uzorka.