Kuidas sisestada rea ​​pärast matši, kasutades 'sed'?

How Insert Line After Match Using Sed

Üks Linuxi kasulikke ja võimsaid käske on käsk sed. Seda käsku kasutatakse Linuxis erinevat tüüpi ülesannete täitmiseks, näiteks vastava teksti või rea lisamiseks, värskendamiseks ja kustutamiseks. Teksti stringisse või faili saab sisestada erinevalt, kasutades käsku sed.

Selles juhendis on näidatud, kuidas sisestada rida pärast stringi või rea vaste leidmist.



Sisestage string stringile

Uue rea saab sisestada mis tahes stringiväärtuse järele käsu sed abil, kui käsus määratletud muster sobib stringiväärtuse mis tahes osaga.



Järgmine näide näitab, kuidas saab stringi väärtuse järel lisada uut rida, kui stringi väärtuses on kindel string olemas.



Näide-1: sisestage rida stringisse pärast vaste leidmist

Järgmine käsk otsib stringi, mulle meeldib programmeerimine ja tekstirida: Kas teile meeldib programmeerimine? Kui otsingustring on olemas, sisestatakse see stringi järele.

Siin kasutatakse märki & rea rea ​​lisamiseks stringi järele.

$viskas välja 'Mulle meeldib programmeerimine.' | sed 's / inng / & Kas teile meeldib programmeerimine? /'

Järgmine väljund näitab, et inng pole stringis olemas ja stringile ei lisata rida.




Järgmine käsk otsib. stringis mulle meeldib programmeerimine ja see on stringis olemas.

$viskas välja 'Mulle meeldib programmeerimine.' | sed 's/ing ./& Kas teile meeldib programmeerimine?/'

Järgmine väljund näitab, et stringile lisatakse uus rida.

Sisestage rida faili

Rida lisamiseks pärast seda, kui vaste on leitud failist, on kaks võimalust. Kui käsku sed kasutatakse ilma -i valikuta, jääb faili sisu muutumatuks ja väljund näitab faili sisu koos lisatud uue reaga. Kui failis on vastav muster, peate uue rea püsivaks sisestamiseks faili kasutama käsku -sed koos suvandiga -i.

A. Kasutades käsku sed

A -d saab kasutada sed -i otsingumustris, et lisada failile üks või mitu rida pärast seda, kui otsimismuster sobib, või konkreetse rea numbri järele.

B. Kasutades i käsus sed

I saab kasutada käsu sed otsingumustris, et sisestada faili üks või mitu rida enne seda rida, kuhu otsimismuster sobib.

Sisestage rida (read) faili vastavalt mustrile:

Looge vahekaardiga eraldatud tekstifail nimega products.txt järgmise sisuga, et näidata ülaltoodud lipu kasutamist käsus sed.

products.txt

ID nimi

01 Vahusta koor

02 Kakaopulber

03 Suhkur

04 Muna

05 Jahu

Näide-2: sisestage rida konkreetse reanumbri järele, kasutades a

Järgmised käsud näitavad, kuidas saab lisada uue rea pärast faili product.txt teatud reanumbrit, lähtudes käsus sed kasutatud mustrist.

Siin näitab esimene käsk faili olemasolevat sisu. Käsk sed lisab faili kahe esimese rea järel teksti b01 Küpsetuspulber. Viimast käsku kasutatakse faili sisu muutmise kontrollimiseks.

$kassproducts.txt

$sed '2 a b01 tKüpsetuspulber'products.txt

$kassproducts.txt

Pärast ülaltoodud käsu käivitamist ilmub järgmine väljund.

Näide-3: sisestage rida viimase rea järele a abil

Järgmine käsk näitab viisi, kuidas faili viimase rea järel uus rida lisada. Esimene ja viimane käsk näitab faili olemasolevat sisu enne ja pärast käsu sed täitmist. Käsu sed mustris kasutatakse faili viimast rida mainides sümbolit $.

$kassproducts.txt

$sed '$ a b01 tKüpsetuspulber'products.txt

$kassproducts.txt

Pärast ülaltoodud käsu käivitamist ilmub järgmine väljund.

Näide-4: sisestage rida faili ükskõik kuhu pärast mustri sobitamist a abil

Järgmine sed käsk näitab, kuidas sobitumismustri alusel saab faili uuele reale lisada kõikjale. Käsklas sed kasutatav muster otsib suvalist rida, mis algab s01 -ga, ja lisab selle järele uue stringi. Faili neljas rida algab s01 -ga ja uus rida sisestatakse pärast seda rida.

$kassproducts.txt

$sed '/^s01.*/a b01 tKüpsetuspulber'products.txt

$kassproducts.txt

Pärast käsu käivitamist kuvatakse järgmine väljund.


Järgmine sed -käsk otsib kõiki ridu, mis lõpevad pulbriga, ja lisab selle järele uue rea. Faili kolmas rida lõpeb pulbriga. Niisiis, uus rida sisestatakse pärast seda rida.

$kassproducts.txt

$sed '/Pulber $/a b01 tKüpsetuspulber'products.txt

$kassproducts.txt

Pärast ülaltoodud käskude käivitamist kuvatakse järgmine väljund.

Näide-5: sisestage sobiva mustri järele mitu rida, kasutades a

Järgmine sed -käsk näitab viisi, kuidas sobiva mustri alusel faili sisusse lisada mitu rida.

Siin lisatakse kolmanda rea ​​järele mustri järgi kaks rida.

$kassproducts.txt

$sed '/^[a-c]/a b01 tKüpsetuspulber nb02 tSöögisooda'products.txt

$kassproducts.txt

Pärast ülaltoodud käskude käivitamist kuvatakse järgmine väljund.

Näide-6: sisestage rida pärast mustri sobitamist, kasutades nuppu I

$kassproducts.txt

$sed '/cream/i b01 tKüpsetuspulber'products.txt

$kassproducts.txt

Pärast ülaltoodud käskude käivitamist kuvatakse järgmine väljund.

Näide -7: sisestage rida püsivalt pärast sobivat mustrit, kasutades valikut -i

Järgmine sed käsk näitab, kuidas faili sisu jäädavalt muuta. Valikut i kasutatakse koos käsuga sed, et lisada mustrisse uus rida.

$kassproducts.txt

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

$kassproducts.txt

Pärast ülaltoodud käskude käivitamist kuvatakse järgmine väljund.

Järeldus:

Selles juhendis on näidatud kahe või enama rea ​​sisestamise viise, kasutades käsku sed koos mustriga, et aidata lugejal rakendada seda käsku ridade sisestamiseks ajutiselt või püsivalt mustri alusel.