Paano Magpasok ng isang Linya pagkatapos ng Pagtutugma gamit ang `sed`?

How Insert Line After Match Using Sed



Ang isa sa mga kapaki-pakinabang at makapangyarihang utos ng Linux ay ang sed command. Ginagamit ang utos na ito upang maisagawa ang iba't ibang uri ng mga gawain sa Linux, tulad ng insert, update, at tanggalin ang isang partikular na teksto o linya batay sa laban. Maaari kang magpasok ng isang teksto sa isang string o isang file sa iba't ibang paraan sa pamamagitan ng paggamit ng sed command.

Paano maglagay ng isang linya pagkatapos makahanap ng isang tugma sa isang string o isang linya ay ipinapakita sa tutorial na ito.







Magpasok ng isang linya sa String

Ang isang bagong linya ay maaaring ipasok pagkatapos ng anumang halaga ng string gamit ang sed command kung ang pattern na tinukoy sa utos ay tumutugma sa anumang bahagi ng halaga ng string.



Ipinapakita ng sumusunod na halimbawa kung paano maaaring maidagdag ang isang bagong linya pagkatapos ng isang halaga ng string kung mayroon ang isang partikular na string kahit saan sa halaga ng string.



Halimbawa-1: Magpasok ng isang linya sa isang string pagkatapos makahanap ng isang tugma

Ang sumusunod na utos ay maghanap inng sa string, gusto ko ng programa, at isang linya ng teksto, Gusto mo ba ng programa? ay ipapasok pagkatapos ng string kung mayroon ang string ng paghahanap.





Dito, ginagamit ang & character upang ipasok ang linya pagkatapos ng string.

$itinapon 'Gusto ko ng programa.' | sed 's / inng / & Gusto mo ba ng programa? /'

Ipinapakita ng sumusunod na output na ang inng ay wala sa string at walang linya na naipasok pagkatapos ng string.




Ang sumusunod na utos ay maghanap sa. sa string, gusto ko ng programa at umiiral ito sa string.

$itinapon 'Gusto ko ng programa.' | sed 's / ing ./& Gusto mo ba ng programa? /'

Ipinapakita ng sumusunod na output na ang bagong linya ay naidagdag pagkatapos ng string.

Magpasok ng isang linya sa isang File

Mayroong dalawang paraan upang magsingit ng isang linya pagkatapos matagpuan ang isang tugma sa isang file na nabanggit sa ibaba. Kapag ginamit ang utos na sed nang walang pagpipiliang -i, pagkatapos ang nilalaman ng file ay mananatiling hindi nagbabago, at ipapakita ng output ang nilalamang file na may ipinasok na newline. Kailangan mong gamitin ang opsyong -i gamit ang utos na sed upang ipasok ang bagong linya nang permanente sa file kung mayroon ang pagtutugma na pattern sa file.

A. Paggamit ng a sa sed utos

Ang a ay maaaring magamit sa pattern ng paghahanap ng sed upang idagdag ang isa o higit pang mga linya sa isang file pagkatapos ng linya kung saan tumutugma ang pattern sa paghahanap o pagkatapos ng isang partikular na numero ng linya.

B. Paggamit ng i sa utos na sed

Maaaring gamitin ang i sa pattern ng paghahanap ng utos sed upang ipasok ang isa o higit pang mga linya sa isang file bago ang linya kung saan tumutugma ang pattern sa paghahanap.

Ipasok ang (mga) linya sa isang file batay sa pattern:

Lumikha ng isang file na na-delimit na text file na pinangalanan mga produkto.txt kasama ang sumusunod na nilalaman upang maipakita ang mga paggamit ng bandila sa itaas sa sed utos.

mga produkto.txt

Pangalan ng ID

01 Whip cream

02 Cocoa Powder

03 Asukal

04 Itlog

05 Flour

Halimbawa-2: Magsingit ng isang linya pagkatapos ng isang partikular na numero ng linya gamit ang a

Ipinapakita ng mga sumusunod na utos kung paano maaaring maidagdag ang isang bagong linya, pagkatapos ng isang partikular na numero ng linya ng mga file ng mga produkto.txt, batay sa pattern na ginamit sa utos na sed.

Dito, ipapakita ng unang utos ang mayroon nang nilalaman ng file. Ang sed utos ay idagdag ang teksto, b01 Baking pulbos, pagkatapos ng unang dalawang linya ng file. Ginamit ang huling utos upang suriin na ang nilalaman ng file ay nabago o hindi.

$pusamga produkto.txt

$sed '2 isang b01 tBaking pulbos'mga produkto.txt

$pusamga produkto.txt

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang utos sa itaas.

Halimbawa-3: Magsingit ng isang linya pagkatapos ng huling linya gamit ang a

Ipinapakita ng sumusunod na utos ang paraan upang magdagdag ng isang bagong linya pagkatapos ng huling linya ng file. Ipinapakita ng una at huling utos ang mayroon nang nilalaman ng file bago at pagkatapos ipatupad ang sed utos. Ang simbolo na $ ay ginagamit sa pattern ng utos sed upang banggitin ang huling linya ng file.

$pusamga produkto.txt

$sed '$ a b01 tBaking pulbos'mga produkto.txt

$pusamga produkto.txt

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang utos sa itaas.

Halimbawa-4: Magsingit ng isang linya saanman sa file pagkatapos tumugma sa isang pattern gamit ang a

Ipinapakita ng sumusunod na utos na sed kung paano maaaring maidagdag ang isang bagong linya saanman sa file batay sa pagtutugma ng pattern. Ang pattern na ginamit sa sed utos ay maghanap ng anumang linya na nagsisimula sa s01, at idaragdag ang bagong string pagkatapos nito. Ang ika-apat na linya ng file ay nagsisimula sa s01, at ang bagong linya ay ipapasok pagkatapos ng linyang iyon.

$pusamga produkto.txt

$sed '/ ^^s01.*/a b01 tBaking Powder'mga produkto.txt

$pusamga produkto.txt

Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos.


Ang sumusunod na utos na sed ay maghanap ng anumang linya na nagtatapos sa Powder at ipasok ang bagong linya pagkatapos nito. Ang ikatlong linya ng file ay nagtatapos sa Powder. Kaya, ang bagong linya ay ipapasok pagkatapos ng linya na iyon.

$pusamga produkto.txt

$sed '/ Powder $ / a b01 tBaking Powder'mga produkto.txt

$pusamga produkto.txt

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang mga utos sa itaas.

Halimbawa-5: Magsingit ng maraming linya pagkatapos ng pagtutugma ng pattern gamit ang a

Ipinapakita ng sumusunod na utos na sed ang paraan upang magdagdag ng maraming mga linya sa loob ng nilalaman ng isang file batay sa pagtutugma ng pattern.

Dito, ang dalawang linya ay idaragdag pagkatapos ng ikatlong linya, ayon sa pattern.

$pusamga produkto.txt

$sed '/ ^ [a-c] / a b01 tBaking Powder nb02 tBaking Soda'mga produkto.txt

$pusamga produkto.txt

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang mga utos sa itaas.

Halimbawa-6: Magsingit ng isang linya pagkatapos tumugma sa isang pattern gamit ang I

$pusamga produkto.txt

$sed '/ cream / i b01 tBaking Powder'mga produkto.txt

$pusamga produkto.txt

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang mga utos sa itaas.

Halimbawa-7: Permanenteng maglagay ng isang linya pagkatapos ng pagtutugma ng pattern gamit ang pagpipiliang -i

Ipinapakita ng sumusunod na utos na sed kung paano baguhin nang permanente ang nilalaman ng file. Ginagamit ang pagpipiliang i gamit ang utos na sed upang magsingit ng isang bagong linya sa file batay sa pattern.

$pusamga produkto.txt

$sed -ako '/ e $ / a g01 tGhee'mga produkto.txt

$pusamga produkto.txt

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang mga utos sa itaas.

Konklusyon:

Ang mga paraan ng pagpasok ng dalawa o higit pang mga linya sa isang file sa pamamagitan ng paggamit ng sed command na may pattern ay ipinakita sa tutorial na ito upang matulungan ang mambabasa na mailapat ang utos na ito para sa pagpasok ng mga linya sa pansamantala o permanenteng batay sa pattern.