sed

Příkaz sed k nahrazení řetězce v souboru

Příkaz sed k nahrazení řetězce v souboru
Kdykoli pracujeme s jakýmkoli druhem souborů, je velmi běžnou praxí provádět úpravy těchto souborů hledáním a nahrazováním slov. Většina textových editorů poskytuje různé metody založené na grafickém uživatelském rozhraní k provedení těchto úprav. Někdy však potřebujete způsob, jak najít a nahradit slova v souboru prostřednictvím terminálu. V tomto článku vás proto provedeme metodou použití příkazu sed k nahrazení řetězce v textovém souboru. Také osvětlíme různé scénáře, ve kterých lze tento příkaz použít.

Poznámka: Pro demonstraci použití příkazu sed k nahrazení řetězce v souboru budeme používat Linux Mint 20. Pokud chcete, můžete také použít jakoukoli jinou verzi systému Linux.

Použití příkazu sed:

Nyní vám ukážeme několik velmi zajímavých příkladů pro zobrazení použití příkazu sed v systému Linux. Podívejme se, jak tento příkaz funguje v různých scénářích.

Vytvoření textového souboru pro demonstraci:

Pro demonstraci použití příkazu sed bychom rádi pracovali s textovým souborem. Můžete však dokonce vytvořit soubor Bash nebo jakýkoli jiný soubor podle vašeho výběru. Zadruhé vytvoříme soubor v domovském adresáři, abychom nemuseli při přístupu k tomuto souboru určovat žádné složité cesty. Při vytváření textového souboru je třeba provést následující kroky:

Klikněte na ikonu Správce souborů umístěnou na hlavním panelu Linux Mint 20:

Nyní vytvořte nový textový soubor v domovském adresáři kliknutím pravým tlačítkem kdekoli tam a následným výběrem možnosti Nový dokument z kaskádové nabídky a možnost Prázdný dokument z dílčí kaskádové nabídky. Po vytvoření textového souboru jej pojmenujte vhodným názvem. Pro tento konkrétní příklad jsem to pojmenoval jako sed.txt.

Dvojitým kliknutím na tento soubor jej otevřete a zadejte libovolný náhodný text, jak je znázorněno na obrázku níže. Uložte tento textový soubor stisknutím Ctrl + S a poté jej zavřete.

Nyní spusťte terminál v Linux Mint 20, jak je znázorněno na následujícím obrázku:

Po spuštění terminálu v Linux Mint 20 můžete postupně procházet všechny níže uvedené příklady.

Použití příkazu sed k nahrazení všech výskytů daného slova:

Příkaz sed můžete použít k nahrazení všech výskytů daného slova v textovém souboru. Syntaxe dosažení tohoto cíle je uvedena níže:

$ sed 's / sed / FindWord / ReplaceWord /' soubor.txt

Zde musíte nahradit FindWord slovem, které chcete nahradit, a ReplaceWord slovem, které má být nahrazeno. Kromě toho musíte také nahradit „soubor“ názvem souboru, kde chcete tato nahrazení provést. V tomto scénáři jsem nahradil FindWord sedem a ReplaceWord nahradil. Název našeho souboru byl sed.txt. Zobrazuje se také na následujícím obrázku:

Úspěšné provedení tohoto příkazu vám ukáže změny, ke kterým došlo z důvodu spuštění tohoto příkazu na vašem terminálu:

Použití příkazu sed k nahrazení n-tého výskytu daného slova v každém řádku:

Výše uvedený scénář byl nejjednodušším alternativním scénářem, ale občas nechcete nahradit všechny výskyty slova, spíše chcete nahradit pouze první, druhý nebo n-tý výskyt daného slova ve všech řádcích. Chcete-li to provést, můžete provést následující příkaz:

Soubor $ sed / FindWord / ReplaceWord / num '.txt

Zde musíte nahradit FindWord slovem, které chcete nahradit, a ReplaceWord slovem, které má být nahrazeno. Kromě toho musíte také nahradit „soubor“ názvem souboru, kde chcete tato nahrazení provést. V tomto scénáři jsem nahradil FindWord replace a ReplaceWord sedem. Název našeho souboru byl sed.txt. Num také odkazuje na výskyt nebo pozici slova, které má být nahrazeno. V ukázaném příkladu chci nahradit první výskyt nahrazení sed v každém řádku, jak je znázorněno na obrázku níže:

Úspěšné provedení tohoto příkazu vám ukáže změny, ke kterým došlo z důvodu spuštění tohoto příkazu na vašem terminálu:

Použití příkazu sed k nahrazení daného slova konkrétním řádkem:

Někdy chcete pouze nahradit dané slovo v určitém řádku a ne v celém dokumentu. Chcete-li to provést, musíte výslovně zadat konkrétní číslo řádku v následujícím příkazu:

$ sed 'LineNum s / FindWord / ReplaceWord /' soubor.txt

Zde musíte nahradit FindWord slovem, které chcete nahradit, a ReplaceWord slovem, které má být nahrazeno. Kromě toho musíte také nahradit „soubor“ názvem souboru, kde chcete tato nahrazení provést. V tomto scénáři jsem nahradil FindWord sed a ReplaceWord nahrazením. Název našeho souboru byl sed.txt. Rovněž musíte nahradit LineNum číslem řádku konkrétního řádku, ve kterém chcete provést nahrazení. V tomto příkladu jsme chtěli nahradit sed s nahradit v řádku číslo 2 našeho souboru, jak je znázorněno na následujícím obrázku:

Úspěšné provedení tohoto příkazu vám ukáže změny, ke kterým došlo z důvodu spuštění tohoto příkazu na vašem terminálu. Můžete snadno ověřit, že k uvedeným změnám došlo pouze na řádku číslo 2 našeho souboru, a nikoli v celém textu.

Závěr:

Kdykoli pocítíte potřebu nahradit kterékoli slovo v souboru, první věcí, kterou musíte udělat, je identifikovat váš konkrétní požadavek.E. ať už chcete nahradit dané konkrétní slovo v celém souboru, nebo chcete nahradit konkrétní výskyt daného konkrétního slova, nebo chcete nahradit dané slovo v konkrétním řádku. Jakmile identifikujete konkrétní scénář, můžete použít konkrétní metodu z příkladů popsaných v tomto článku.

Hry Nejlepší hry pro ruční sledování
Nejlepší hry pro ruční sledování
Oculus Quest nedávno představil skvělou myšlenku ručního sledování bez ovladačů. S neustále se zvyšujícím počtem her a aktivit, které provádějí podpor...
Hry Jak zobrazit překrytí OSD v linuxových aplikacích a hrách na celou obrazovku
Jak zobrazit překrytí OSD v linuxových aplikacích a hrách na celou obrazovku
Hraní her na celou obrazovku nebo používání aplikací v režimu celé obrazovky bez rozptýlení vás mohou odříznout od příslušných systémových informací v...
Hry Top 5 karet pro zachycení hry
Top 5 karet pro zachycení hry
Všichni jsme viděli a milovali streamování her na YouTube. PewDiePie, Jakesepticye a Markiplier jsou jen někteří z nejlepších hráčů, kteří vydělali mi...