Kā ievietot līniju pēc spēles, izmantojot 'sed'?

How Insert Line After Match Using Sed



Viena no noderīgām un spēcīgām Linux komandām ir komanda sed. Šī komanda tiek izmantota, lai operētājsistēmā Linux veiktu dažāda veida uzdevumus, piemēram, ievietotu, atjauninātu un dzēstu noteiktu tekstu vai rindu, pamatojoties uz atbilstību. Jūs varat ievietot tekstu virknē vai failā dažādos veidos, izmantojot komandu sed.

Šajā apmācībā ir parādīts, kā ievietot rindu pēc atbilstības atrašanas virknē vai rindā.







Ievietojiet virkni virknē

Ja pēc komandas sed tiek izmantota jauna virkne, to var ievietot pēc jebkuras virknes vērtības, ja komandā definētais modelis atbilst jebkurai virknes vērtības daļai.



Šis piemērs parāda, kā jaunu virkni var pievienot pēc virknes vērtības, ja konkrēta virkne pastāv jebkur virknes vērtībā.



1. piemērs: ievietojiet rindu virknē pēc atbilstības atrašanas

Šī komanda meklēs virkni, man patīk programmēšana, un teksta rindiņa: Vai jums patīk programmēšana? tiks ievietots aiz virknes, ja meklēšanas virkne pastāv.





Šeit rakstzīme & tiek izmantota, lai ievietotu rindu aiz virknes.

$izmest ārā 'Man patīk programmēt.' | sed 's / inng / & Vai jums patīk programmēt? /'

Šī izvade parāda, ka virknē nepastāv inng un aiz virknes netiek ievietota rinda.




Šī komanda meklēs. virknē man patīk programmēšana, un tā pastāv virknē.

$izmest ārā 'Man patīk programmēt.' | sed 's/ing ./& Vai jums patīk programmēt?/'

Sekojošā izvade parāda, ka jaunā virkne tiek pievienota pēc virknes.

Ievietojiet rindiņu failā

Ir divi veidi, kā ievietot rindu pēc tam, kad atbilstība ir atrasta zemāk minētajā failā. Ja komanda sed tiek izmantota bez opcijas -i, tad faila saturs paliks nemainīgs, un izvade parādīs faila saturu ar ievietoto jauno rindu. Jums ir jāizmanto opcija -i kopā ar komandu sed, lai failā pastāvīgi ievietotu jauno rindu, ja failā pastāv atbilstošs modelis.

A. Izmantojot komandu komandā sed

A var izmantot sed meklēšanas modelī, lai pievienotu vienai vai vairākām rindiņām failā aiz rindas, kurā atbilst meklēšanas modelis, vai pēc konkrēta rindas numura.

B. Izmantojot i komandā sed

I komandu var izmantot komandas sedēšanas meklēšanas modelī, lai ievietotu failā vienu vai vairākas rindas pirms rindiņas, kurā atbilst meklēšanas modelis.

Ievietojiet rindiņu (-as) failā, pamatojoties uz modeli:

Izveidojiet ar tabulāciju norobežotu teksta failu ar nosaukumu products.txt ar šādu saturu, lai parādītu iepriekš minētā karoga lietojumu komandā sed.

products.txt

ID nosaukums

01 Saputo krējumu

02 Kakao pulveris

03 Cukurs

04 Ola

05 Milti

2. piemērs: ievietojiet rindu aiz konkrēta rindas numura, izmantojot a

Šīs komandas parāda, kā pēc konkrēta faila products.txt faila rindas numura var pievienot jaunu rindu, pamatojoties uz komandu sed.

Šeit pirmā komanda parādīs faila esošo saturu. Komanda sed pēc teksta pirmajām divām rindiņām pievienos tekstu b01 Cepamais pulveris. Pēdējā komanda tiek izmantota, lai pārbaudītu, vai faila saturs ir mainīts.

$kaķisproducts.txt

$sed '2 a b01 tCepamais pulveris'products.txt

$kaķisproducts.txt

Pēc iepriekš minētās komandas palaišanas parādīsies šāda izvade.

3. piemērs: ievietojiet rindu aiz pēdējās rindas, izmantojot a

Šī komanda parāda veidu, kā pievienot jaunu rindu pēc faila pēdējās rindas. Pirmā un pēdējā komanda parāda faila esošo saturu pirms un pēc komandas sed izpildīšanas. Simbols $ tiek izmantots komandas sed modelī, lai pieminētu faila pēdējo rindu.

$kaķisproducts.txt

$sed '$ a b01 tCepamais pulveris'products.txt

$kaķisproducts.txt

Pēc iepriekš minētās komandas palaišanas parādīsies šāda izvade.

4. piemērs: ievietojiet rindu jebkurā vietā failā pēc raksta atbilstības, izmantojot a

Šī komanda sed parāda, kā, pamatojoties uz atbilstošo modeli, var pievienot jaunu rindu jebkurā vietā failā. Komandā sed izmantotais modelis meklēs jebkuru rindu, kas sākas ar s01, un pēc tam pievienos jauno virkni. Faila ceturtā rinda sākas ar s01, un jaunā rinda tiks ievietota aiz šīs rindas.

$kaķisproducts.txt

$sed '/^s01.*/a b01 tCepamais pulveris'products.txt

$kaķisproducts.txt

Pēc komandas palaišanas parādīsies šāda izvade.


Šī komanda sed meklēs jebkuru rindu, kas beidzas ar pulveri, un pēc tās ievieto jaunu rindu. Faila trešā rinda beidzas ar pulveri. Tātad jaunā rinda tiks ievietota aiz šīs rindas.

$kaķisproducts.txt

$sed '/Pulveris $/a b01 tCepamais pulveris'products.txt

$kaķisproducts.txt

Pēc iepriekš minēto komandu palaišanas parādīsies šāda izvade.

5. piemērs: ievietojiet vairākas rindas pēc atbilstošā modeļa, izmantojot

Šī komanda sed parāda, kā faila saturam pievienot vairākas rindas, pamatojoties uz atbilstošo modeli.

Šeit pēc trešās rindas saskaņā ar paraugu tiks pievienotas divas rindas.

$kaķisproducts.txt

$sed '/^[a-c]/a b01 tCepamais pulveris nb02 tCepamā soda'products.txt

$kaķisproducts.txt

Pēc iepriekš minēto komandu palaišanas parādīsies šāda izvade.

6. piemērs: ievietojiet līniju pēc raksta saskaņošanas, izmantojot I

$kaķisproducts.txt

$sed '/cream/i b01 tCepamais pulveris'products.txt

$kaķisproducts.txt

Pēc iepriekš minēto komandu palaišanas parādīsies šāda izvade.

7. piemērs: ievietojiet rindu pastāvīgi pēc atbilstošā modeļa, izmantojot opciju -i

Šī komanda sed parāda, kā neatgriezeniski mainīt faila saturu. I opcija tiek izmantota kopā ar komandu sed, lai failā ievietotu jaunu rindu, pamatojoties uz modeli.

$kaķisproducts.txt

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

$kaķisproducts.txt

Pēc iepriekš minēto komandu palaišanas parādīsies šāda izvade.

Secinājums:

Šajā apmācībā ir parādīti veidi, kā failā ievietot divas vai vairākas rindas, izmantojot komandu sed ar rakstu, lai palīdzētu lasītājam piemērot šo komandu, lai īslaicīgi vai pastāvīgi ievietotu rindas, pamatojoties uz modeli.