sed

Jak nahradit vše po vzoru pomocí příkazu 'sed'

Jak nahradit vše po vzoru pomocí příkazu 'sed'

V systému Linux lze úkoly výměny provádět různými způsoby. Příkaz 'sed' je jedním ze způsobů, jak provést náhradní úlohu. Tento příkaz lze použít k nahrazení textu v řetězci nebo souboru pomocí jiného vzoru. Jak můžete nahradit vše po odpovídajícím vzoru pomocí příkazu 'sed', je uvedeno v tomto kurzu.

Nahraďte vše po zápase v řetězci:

V této části tohoto tutoriálu je ukázáno, jak lze část řetězce nahradit na základě shodného vzoru a $ PARTITION_COLUMN. Ale tato proměnná funguje, pokud se vzor shoduje s jakýmkoli slovem na začátku nebo uprostřed řetězce. Nenahradí text, pokud se vzor shoduje s posledním slovem řetězce.

Příklad 1: Po zápase vše vyměňte pomocí $ PARTITION_COLUMN

Následující příkaz vyhledá znak „a“ a zbývající část za „a“ bude nahrazena textem „populární blogová stránka“. $ PARTITION_COLUMN.* se používá k definování zbývající části za znakem, 'a'.

$ echo "LinuxHint je web" | sed "s / a $ PARTITION_COLUMN.* / populární blogová stránka / "

Po spuštění příkazu se zobrazí následující výstup. Zde je „webová stránka“ nahrazena „oblíbenou webovou stránkou blogu“.


Následující vzor vyhledá slovo 'web'V řetězci a zbývající část nahraďte'web„Podle textu,“populární blogová stránka„pokud shoda existuje a“web„Není součástí posledního slova řetězce.

$ echo "LinuxHint je web" | sed "s / web.* $ PARTITION_COLUMN.* / populární blogová stránka / "

Po spuštění příkazu se zobrazí následující výstup. Zde je „web“ posledním slovem řetězce a z tohoto důvodu nebyla provedena žádná výměna.

Příklad 2: Nahradit vše po zápase pomocí vzoru

Následující příkaz vyhledá slovo 'bash'globálně v řetězci a nahradit vše slovem, pokud slovo v řetězci existuje. ''G'Se zde používá pro globální vyhledávání.

$ echo "Mám rád bash programování" | sed "s / bash.* / skript pythonu / g "

Po spuštění příkazu se zobrazí následující výstup. Zde uprostřed řetězce existuje „bash“ a výměna byla provedena.

Nahraďte vše po zápase v souboru:

Veškerý obsah konkrétního řádku nebo více řádků nebo zbývající řádky souboru po shodě lze nahradit pomocí 'sed'příkaz. Vytvořte textový soubor s názvem účast.txt s následujícím obsahem otestovat příklady uvedené v této části.

účast.txt

1108885 je přítomen
1999979 je přítomen
1769994 chybí
1105656 chybí
1455999 chybí

Příklad -3: Nahradit veškerý obsah z řádku souboru po shodě

Následující příkaz „sed“ prohledá v souboru číslo 1769994 a vše s číslem bude nahrazeno textem, „1586844 je přítomen“, pokud číslo existuje v libovolném řádku souboru.

$ kočka alendence.txt
$ sed "s / 1769994.* / 1586844 je přítomen / "docházka.txt

Po spuštění příkazů se zobrazí následující výstup. Zde existuje vyhledávací číslo ve třetím řádku souboru a výměna byla provedena.

Příklad -4: Nahradit veškerý obsah z více řádků souboru po shodě

Následující příkaz 'sed' ukazuje použití proměnné $ PARTITION_COLUMN k nahrazení více řádků ze souboru. Příkaz prohledá '110' na začátku každého řádku souboru a nahradí vše '110' textem 'Neplatný záznam', kde bude nalezen odpovídající text.

$ účast koček.txt
$ sed "s / ^ 110.* $ PARTITION_COLUMN.* / Neplatný vstup / „docházka.txt

Po spuštění příkazů se zobrazí následující výstup. „110“ existuje ve dvou řádcích souboru a tyto byly nahrazeny nahrazujícím textem.

Příklad 5: Nahradit veškerý obsah z řádku souboru pomocí znaku „c“ po shodě

Následující 'sed'příkaz ukazuje použití'C„nahradit vše po zápase. Tady, 'C'označuje změnu. Příkaz vyhledá slovo 'současnost, dárek„v souboru a nahradit celý řádek textem,“Tento řádek je nahrazen„pokud slovo existuje v jakémkoli řádku souboru.

$ účast koček.txt
$ sed '/ present / c Tento řádek je nahrazen' docházkou.txt

Po spuštění příkazů se zobrazí následující výstup. Slovo „přítomný“ existuje v prvních dvou řádcích souboru a tyto dva řádky byly nahrazeny nahrazujícím textem.

Příklad 6: Nahradit veškerý obsah z řádku souboru na základě počátečního a koncového vzoru

Někdy je nutné nahradit text na základě počátečního a koncového vzoru. Následující příkaz 'sed' ukazuje způsob, jak definovat počáteční a koncové vzory pro nahrazení řádků ze souboru. Příkaz prohledá ty řádky v souboru, které začínají číslem 110 a končí slovem „chybí“ a nahradí vše slovem „nahrazeno“, kde se vzory shodují.

$ účast koček.txt
$ sed -e '/ ^ 110.* absence $ / nahrazena / g 'docházka.txt

Po spuštění příkazů se zobrazí následující výstup. Zde první a čtvrtý řádek začínají číslem 110, ale slovo „chybí“ existuje pouze ve čtvrtém řádku. Čtvrtý řádek souboru byl tedy nahrazen nahrazujícím textem.

Závěr:

Příkaz „sed“ je velmi výkonným nástrojem systému Linux k provádění různých typů úloh souvisejících se zpracováním textu. Úloha nahrazení založená na shodném vzoru je popsána v tomto kurzu pomocí různých typů vzorů v příkazu 'sed'. $ PARTITION_COLUMN, 'c' a '.* 'se v tomto kurzu používá k nahrazení všeho řádku souboru, kde existuje odpovídající vzor. Ukázala se zde použití některých znaků definujících vzorů, například '^' a '$'. Existuje mnoho dalších znaků, které definují vzor v regulárním výrazu pro účely vyhledávání. Doufám, že tento výukový program pomůže čtenáři znát základy nahrazení všeho ze souboru po zápase.

Top 5 ergonomických produktů pro počítačové myši pro Linux
Způsobuje dlouhodobé používání počítače bolest zápěstí nebo prstů? Trpíte ztuhlými klouby a neustále si musíte třást ruce? Cítíte pálivou bolest pokaž...
Jak změnit nastavení myši a touchpadu pomocí Xinput v Linuxu
Většina linuxových distribucí je ve výchozím nastavení dodávána s knihovnou „libinput“ pro zpracování vstupních událostí v systému. Může zpracovávat v...
Přemapujte tlačítka myši odlišně pro jiný software pomocí ovládání myší X-Mouse
Možná potřebujete nástroj, který by mohl změnit ovládání myši u každé aplikace, kterou používáte. V takovém případě můžete vyzkoušet aplikaci s názvem...