Ako vložiť riadok po zápase pomocou „sed“?

How Insert Line After Match Using Sed



Jeden z užitočných a výkonných príkazov Linuxu je príkaz sed. Tento príkaz sa používa na vykonávanie rôznych typov úloh v systéme Linux, ako je vkladanie, aktualizácia a odstraňovanie konkrétneho textu alebo riadka na základe zhody. Text do reťazca alebo súboru môžete vložiť rôznymi spôsobmi pomocou príkazu sed.

V tomto návode sa dozviete, ako vložiť riadok po nájdení zhody v reťazci alebo riadku.





Vložte reťazec do reťazca

Nový riadok je možné vložiť za ľubovoľnú hodnotu reťazca pomocou príkazu sed, ak sa vzor definovaný v príkaze zhoduje s akoukoľvek časťou hodnoty reťazca.



Nasledujúci príklad ukazuje, ako je možné pridať nový riadok za hodnotu reťazca, ak konkrétny reťazec existuje kdekoľvek v hodnote reťazca.



Príklad 1: Vložte riadok do reťazca po nájdení zhody

Nasledujúci príkaz bude hľadať v reťazci, mám rád programovanie a riadok textu: Máte radi programovanie? sa vloží za reťazec, ak hľadaný reťazec existuje.





Tu sa na vloženie riadka za reťazec používa znak &.

$zahodil 'Rád programujem.' | sed 's / inng / & Máte radi programovanie? /'

Nasledujúci výstup ukazuje, že inng v reťazci neexistuje a za reťazec nie je vložený žiadny riadok.




Nasledujúci príkaz vyhľadá ing. v reťazci mám rád programovanie a existuje v reťazci.

$zahodil 'Rád programujem.' | sed 's/ing ./& Máte radi programovanie?/'

Nasledujúci výstup ukazuje, že nový riadok je pridaný za reťazec.

Vložte riadok do súboru

Existujú dva spôsoby, ako vložiť riadok po nájdení zhody v súbore, ktorý je uvedený nižšie. Keď sa príkaz sed použije bez možnosti -i, potom obsah súboru zostane nezmenený a výstup zobrazí obsah súboru s vloženým novým riadkom. Ak v súbore existuje zodpovedajúci vzor, ​​musíte použiť voľbu -i s príkazom sed na trvalé vloženie nového riadka do súboru.

A. Použitie príkazu a v sed

A a možno použiť vo vyhľadávacom vzore sed na pripojenie jedného alebo viacerých riadkov v súbore za riadok, v ktorom sa vyhľadávací vzor zhoduje, alebo za konkrétnym číslom riadku.

B. Použitie i v príkaze sed

Parameter i je možné použiť vo vzore vyhľadávania príkazu sed na vloženie jedného alebo viacerých riadkov do súboru pred riadok, v ktorom sa zhoduje vzor vyhľadávania.

Vložte riadky do súboru podľa vzoru:

Vytvorte textový súbor s hodnotami oddelenými tabulátormi products.txt s nasledujúcim obsahom, ktorý ukazuje použitie vyššie uvedeného príznaku v príkaze sed.

products.txt

ID meno

01 Smotana na šľahanie

02 kakaový prášok

03 Cukor

04 Vajíčko

05 Múka

Príklad 2: Vložte riadok za číslo konkrétneho riadku pomocou a

Nasledujúce príkazy ukazujú, ako je možné pridať nový riadok za konkrétne číslo riadka súboru products.txt na základe vzoru použitého v príkaze sed.

Tu prvý príkaz zobrazí existujúci obsah súboru. Príkaz sed pripojí text, b01 prášok do pečiva, za prvé dva riadky súboru. Posledný príkaz slúži na kontrolu, či je alebo nie je zmenený obsah súboru.

$katproducts.txt

$sed „2 a b01 t prášok do pečiva“products.txt

$katproducts.txt

Po spustení vyššie uvedeného príkazu sa zobrazí nasledujúci výstup.

Príklad 3: Vložte riadok za posledný riadok pomocou a

Nasledujúci príkaz ukazuje spôsob, ako pripojiť nový riadok za posledný riadok súboru. Prvý a posledný príkaz zobrazuje existujúci obsah súboru pred a po vykonaní príkazu sed. Symbol $ sa používa vo vzore príkazu sed na označenie posledného riadka súboru.

$katproducts.txt

$sed „$ a b01 t prášok do pečiva“products.txt

$katproducts.txt

Po spustení vyššie uvedeného príkazu sa zobrazí nasledujúci výstup.

Príklad-4: Vložte riadok kdekoľvek v súbore po zhode so vzorom pomocou a

Nasledujúci príkaz sed ukazuje, ako je možné pridať nový riadok kdekoľvek v súbore na základe zodpovedajúceho vzoru. Vzor použitý v príkaze sed vyhľadá akýkoľvek riadok začínajúci na s01 a pridá zaň nový reťazec. Štvrtý riadok súboru začína s01 a nový riadok sa vloží za tento riadok.

$katproducts.txt

$sed '/^s01.*/a b01 t prášok do pečiva'products.txt

$katproducts.txt

Po spustení príkazu sa zobrazí nasledujúci výstup.


Nasledujúci príkaz sed vyhľadá každý riadok, ktorý končí práškom, a vloží zaň nový riadok. Tretí riadok súboru končí práškom. Nový riadok bude teda vložený za tento riadok.

$katproducts.txt

$sed '/Prášok $/a b01 t prášok do pečiva'products.txt

$katproducts.txt

Po spustení vyššie uvedených príkazov sa zobrazí nasledujúci výstup.

Príklad 5: Vložiť viac riadkov za zodpovedajúci vzor pomocou a

Nasledujúci príkaz sed ukazuje spôsob, ako pridať viac riadkov do obsahu súboru na základe zodpovedajúceho vzoru.

Tu podľa vzoru pribudnú za tretí riadok dva riadky.

$katproducts.txt

$sed '/^[a-c]/a b01 t prášok do pečiva nb02 t sóda bikarbóna'products.txt

$katproducts.txt

Po spustení vyššie uvedených príkazov sa zobrazí nasledujúci výstup.

Príklad-6: Vložte riadok po zhode so vzorom pomocou I

$katproducts.txt

$sed '/smotana/i b01 t prášok do pečiva'products.txt

$katproducts.txt

Po spustení vyššie uvedených príkazov sa zobrazí nasledujúci výstup.

Príklad -7: Vložiť riadok natrvalo za zodpovedajúci vzor pomocou možnosti -i

Nasledujúci príkaz sed ukazuje, ako natrvalo zmeniť obsah súboru. Voľba i sa používa s príkazom sed na vloženie nového riadka do súboru na základe vzoru.

$katproducts.txt

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

$katproducts.txt

Po spustení vyššie uvedených príkazov sa zobrazí nasledujúci výstup.

Záver:

Spôsoby vkladania dvoch alebo viacerých riadkov do súboru pomocou príkazu sed so vzorom boli ukázané v tomto návode, aby čitateľovi pomohol tento príkaz použiť na dočasné alebo trvalé vkladanie riadkov na základe vzoru.