nahradit textový řetězec v souboru [Guide]

Úprava textových dokumentů v Linuxu manuálně může být zdlouhavá. Proto je výhodné znát metody, jak rychle zaměnit konkrétní textové pasáže v souborech pomocí příkazového řádku. Pokud jste s Linuxem nováčci a nevíte si s tím rady, rádi vám pomůžeme! Následující řádky vám ukáží, jak v Linuxu efektivně nahradit textové řetězce v souborech.

Záměna textu v souborech s využitím nástroje sed

Nástroj sed je považován za nejefektivnější metodu pro nahrazování textu v souborech v Linuxu. Je to díky jeho jednoduchosti a vysoké efektivitě. Sed je zpravidla předinstalovaný ve většině linuxových operačních systémů, tudíž není nutná žádná dodatečná instalace.

Záměna textu v souboru pomocí příkazu Sed se provádí s použitím parametru -i. Níže je uveden postup, jak tento příkaz použít. Nejprve otevřete terminál v prostředí Linuxu. Terminál můžete spustit kombinací kláves Ctrl + Alt + T.

Po otevření terminálu zadejte do příkazového řádku sed -i. To je základní konstrukce příkazu pro nahrazení.

sed -i

Následně za příkaz sed -i přidejte apostrof '. Tento znak je klíčový, protože veškerý text pro nahrazení pomocí sed -i musí začínat za tímto symbolem.

sed -i '

Po prvním apostrofu zadejte s/. Tato sekvence značí, že následující text bude hledán a nahrazen.

sed -i 's/

Když je s/ zapsáno v příkazovém řádku, je čas specifikovat, jaký text v souboru chcete nahradit. V tomto demonstračním příkladu si ukážeme nahrazení slova „jablko“.

sed -i 's/apple

Po zapsání textu k nahrazení následuje definování nového textu, který jej má nahradit. V našem příkladu nahradíme „jablka“ slovem „pomeranče“.

sed -i 's/apples/oranges

Jakmile je v příkazu obsažen nový text, který bude nahrazovat původní, uzavřete příkaz sekvencí g/. g/ informuje sed, že má nahradit všechny výskyty textu (jablka) novým textem (pomeranče). Výsledný příkaz by měl vypadat jako v následujícím příkladu.

Poznámka: Pokud nechcete nahradit všechny výskyty (například jablka za pomeranče), odstraňte g a ponechte jen sed -i 's/jablka/pomeranče/'.

sed -i 's/apple/orange/g'

Závěrem, je nutné sdělit sed, ve kterém souboru se nachází text určený k nahrazení. V našem případě je cílovým souborem fruit.txt, který je umístěn v domovském adresáři.

sed -i 's/apples/oranges/g' ~/fruit.txt

Stisknutím klávesy Enter spustíte příkaz a provedete nahrazení textu v daném souboru.

Záměna textu v souborech s využitím jazyka Perl

Další metodou, jak efektivně nahrazovat text v souborech v Linuxu, je využití programovacího jazyka Perl. Perl je často využíván pro zpracování textu, a proto je přirozeně vhodný pro záměnu textových pasáží v souborech.

Pro začátek se ujistěte, že máte Perl na vašem linuxovém počítači nainstalovaný. Většina distribucí Linuxu přichází s již předinstalovaným Perlem. Nicméně pokud Perl nemáte, prostudujte si nápovědu vašeho operačního systému, kde naleznete instrukce, jak jej nainstalovat.

Pro použití Perlu k nahrazování textu v souborech je potřeba otevřít terminál. Terminál spustíte klávesovou zkratkou Ctrl + Alt + T. Případně jej můžete vyhledat v menu aplikací a spustit tak.

Jakmile je terminál otevřen a připraven k použití, začněte zadáním perl -pe do příkazové řádky. Příkaz perl -pe je základní konstrukce pro provedení nahrazení textu v souboru.

perl -pe

Po zadání perl -pe do terminálu je nutné začít prvním apostrofem '. Tento znak informuje Perl, kde je v příkazu oblast vyhrazená pro nahrazení textu.

perl -pe '

Po prvním apostrofu přidejte s/, za nímž následuje text, který chcete nahradit, a další /. Například pro nahrazení „jablka“ v souboru fruit.txt byste napsali následující text.

perl -pe 's/apples/

Po zadání textu, který má být nahrazen, následuje text, kterým má být původní nahrazen. Pokud například chcete nahradit „jablka“ v fruit.txt slovem „pomeranče“, přidejte „pomeranče“ za perl -pe 's/apples/, takže výsledný zápis bude vypadat jako perl -pe 's/apples/oranges/.

perl -pe 's/apples/oranges/

Jakmile jsou v příkazu obsaženy oba textové řetězce, musíte zadat vstupní soubor, se kterým má Perl pracovat. Například, chcete-li provést nahrazení textu v souboru fruit.txt, musíte tento soubor v příkazu specifikovat.

Poznámka: V našem příkladu se soubor fruit.txt nachází v domovském adresáři (~/). Pro správnou funkčnost příkazu nezapomeňte nahradit ~/fruit.txt cestou k vašemu textovému souboru.

perl -pe 's/apples/oranges/' ~/fruit.txt

Nyní, když je k příkazu připojen vstupní soubor, měl by vypadat jako níže.

perl -pe 's/apples/oranges/' ~/fruit.txt > /tmp/output.txt;cat /tmp/output.txt > ~/fruit.txt

Po spuštění výše uvedeného příkazu dojde k nahrazení textového řetězce novým textem, který jste zadali. V našem příkladu jsme „jablka“ nahradili slovem „pomeranče“. Pro zobrazení změn můžete použít níže uvedený příkaz.

cat fruit.txt