Jak vložit řádek po zápase pomocí `sed`?

How Insert Line After Match Using Sed



Jedním z užitečných a výkonných příkazů Linuxu je příkaz sed. Tento příkaz se používá k provádění různých typů úkolů v Linuxu, jako je vkládání, aktualizace a mazání konkrétního textu nebo řádku na základě shody. Pomocí příkazu sed můžete vložit text do řetězce nebo souboru různými způsoby.

V tomto kurzu je ukázáno, jak vložit řádek po nalezení shody v řetězci nebo řádku.







Vložte řádek do řetězce

Nový řádek lze vložit za libovolnou hodnotu řetězce pomocí příkazu sed, pokud se vzor definovaný v příkazu shoduje s jakoukoli částí hodnoty řetězce.



Následující příklad ukazuje, jak lze za hodnotu řetězce přidat nový řádek, pokud konkrétní řetězec existuje kdekoli v hodnotě řetězce.



Příklad-1: Vložte řádek do řetězce po nalezení shody

Následující příkaz bude hledat řetězec, mám rád programování a řádek textu Máte rádi programování? bude za řetězec vložen, pokud hledaný řetězec existuje.





Zde se znak & používá k vložení řádku za řetězec.

$vyhodil 'Rád programuji.' | sed 's / inng / & Máte rádi programování? /'

Následující výstup ukazuje, že inng v řetězci neexistuje a za řetězec není vložen žádný řádek.




Následující příkaz prohledá ing. v řetězci mám rád programování a v řetězci existuje.

$vyhodil 'Rád programuji.' | sed 's/ing ./& Máte rádi programování?/'

Následující výstup ukazuje, že nový řádek je přidán za řetězec.

Vložte řádek do souboru

Existují dva způsoby, jak vložit řádek po nalezení shody v souboru, který je uveden níže. Když je příkaz sed použit bez volby -i, pak obsah souboru zůstane beze změny a výstup zobrazí obsah souboru s vloženým novým řádkem. Pokud v souboru existuje shodný vzor, ​​musíte použít volbu -i s příkazem sed k trvalému vložení nového řádku do souboru.

A. Pomocí příkazu a v sed

A a lze použít ve vyhledávacím vzoru sed k připojení jednoho nebo více řádků v souboru za řádek, kde se shoduje vyhledávací vzor, ​​nebo za konkrétní číslo řádku.

B. Použití i v příkazu sed

Parametr i lze použít ve vyhledávacím vzoru příkazu sed k vložení jednoho nebo více řádků do souboru před řádek, kde se shoduje vyhledávací vzor.

Vložte řádky do souboru podle vzoru:

Vytvořte textový soubor oddělený tabulátory s názvem products.txt s následujícím obsahem ukázat použití výše uvedeného příznaku v příkazu sed.

products.txt

ID jméno

01 Šlehačka

02 Kakaový prášek

03 Cukr

04 Vejce

05 Mouka

Příklad 2: Vložte řádek za konkrétní číslo řádku pomocí a

Následující příkazy ukazují, jak lze přidat nový řádek za konkrétní číslo řádku souboru products.txt na základě vzoru použitého v příkazu sed.

Zde první příkaz zobrazí existující obsah souboru. Příkaz sed připojí text, b01 Prášek do pečiva, za první dva řádky souboru. Poslední příkaz slouží ke kontrole, zda je či není změněn obsah souboru.

$kočkaproducts.txt

$sed '2 a b01 t prášek do pečiva'products.txt

$kočkaproducts.txt

Po spuštění výše uvedeného příkazu se zobrazí následující výstup.

Příklad 3: Vložte řádek za poslední řádek pomocí a

Následující příkaz ukazuje způsob, jak připojit nový řádek za poslední řádek souboru. První a poslední příkaz ukazuje existující obsah souboru před a po provedení příkazu sed. Symbol $ se používá ve vzoru příkazu sed pro zmínku o posledním řádku souboru.

$kočkaproducts.txt

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

$kočkaproducts.txt

Po spuštění výše uvedeného příkazu se zobrazí následující výstup.

Příklad-4: Vložte řádek kamkoli do souboru po přiřazení vzoru pomocí a

Následující příkaz sed ukazuje, jak lze nový řádek přidat kamkoli do souboru na základě odpovídajícího vzoru. Vzor použitý v příkazu sed prohledá libovolný řádek začínající s01 a přidá za něj nový řetězec. Čtvrtý řádek souboru začíná s01 a nový řádek bude vložen za tento řádek.

$kočkaproducts.txt

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

$kočkaproducts.txt

Po spuštění příkazu se zobrazí následující výstup.


Následující příkaz sed prohledá jakýkoli řádek, který končí práškem, a vloží za něj nový řádek. Třetí řádek souboru končí práškem. Nový řádek bude tedy vložen za tento řádek.

$kočkaproducts.txt

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

$kočkaproducts.txt

Po spuštění výše uvedených příkazů se zobrazí následující výstup.

Příklad-5: Vložte více řádků za odpovídající vzor pomocí a

Následující příkaz sed ukazuje způsob, jak přidat více řádků do obsahu souboru na základě odpovídajícího vzoru.

Zde budou podle vzoru přidány dva řádky za třetí řádek.

$kočkaproducts.txt

$sed '/^[a-c]/a b01 t prášek do pečiva nb02 t jedlá soda'products.txt

$kočkaproducts.txt

Po spuštění výše uvedených příkazů se zobrazí následující výstup.

Příklad-6: Vložte řádek po přiřazení vzoru pomocí I

$kočkaproducts.txt

$sed '/krém/i b01 t prášek do pečiva'products.txt

$kočkaproducts.txt

Po spuštění výše uvedených příkazů se zobrazí následující výstup.

Příklad -7: Vložit řádek trvale za odpovídající vzor pomocí volby -i

Následující příkaz sed ukazuje, jak trvale změnit obsah souboru. Volba i se používá s příkazem sed k vložení nového řádku do souboru na základě vzoru.

$kočkaproducts.txt

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

$kočkaproducts.txt

Po spuštění výše uvedených příkazů se zobrazí následující výstup.

Závěr:

Způsoby vložení dvou nebo více řádků do souboru pomocí příkazu sed se vzorem byly ukázány v tomto kurzu, aby čtenář pomohl použít tento příkaz pro dočasné nebo trvalé vkládání řádků na základě vzoru.