GNU/Linux >> Znalost Linux >  >> Ubuntu

Použijte příkaz SED k vyhledání a nahrazení řetězce v souborech – Jak provést tento úkol na Ubuntu?

Sed je zkratka pro stream editor. Přečte daný soubor a upraví vstup, jak je určeno seznamem příkazů sed.

Ve výchozím nastavení je vstup zapsán na obrazovku, ale můžete vynutit aktualizaci souboru.

Příkaz Sed (Stream EDitor) Linux se používá k vyhledávání, hledání a nahrazování nebo vkládání a mazání slov a řádků v textovém souboru.

Nejčastějším případem použití příkazu Sed je vyhledání a nahrazení řetězců v souborech. Při použití příkazu Sed můžete upravovat soubory, aniž byste je otevírali.

Zde v LinuxAPT, jako součást našich služeb správy serveru, pravidelně pomáháme našim zákazníkům provádět dotazy související se servery Linux.

V této souvislosti se podíváme na to, jak použít příkaz Sed k nalezení a nahrazení řetězců v souborech v systému Ubuntu 20.04.


Najít a nahradit v Ubuntu

Ve výchozím nastavení je Sed nainstalován ve většině distribucí Linuxu. Instalaci Sed na vašem systému Linux můžete ověřit spuštěním:

$ sed --v

Základní syntaxe použití příkazu Sed k vyhledání a nahrazení textu je:

$ sed -i 's/Search_pattern/Replacement_pattern/g' FILE

Kde:

-i:Tato volba umožňuje příkazu Sed upravovat soubory na místě namísto zápisu výstupu na standardní výstup.

s:To znamená náhradní.

/ /:Oddělovací znaky.

g:Je to globální příznak nahrazení.

FILE:Soubor, se kterým chcete manipulovat pomocí příkazu Sed.


Důrazně se doporučuje umístit vyhledávací vzor, ​​náhradní vzor a další argumenty do uvozovek.

Zde je například textový soubor, který byl použit pro demonstraci:

567 Test test test
test /bin/zsh linuxapt.com testbar 789

Chcete-li nahradit všechna „testovací“ slova slovy „linux“, spusťte následující příkaz:

$ sed -i 's/test/linux/g' test.txt

Pokud nepoužijete příznak g, bude nahrazen pouze první výskyt vyhledávacího vzoru v každém řádku:

$ sed -i 's/test/linux/' test.txt

Aby se ve vyhledávacím vzoru nerozlišovala velká a malá písmena, použijte příznak I:

$ sed -i 's/test/linux/gI' test.txt

Ve světě Linuxu se setkáme s mnoha případy použití, které mají oddělovací znaky v textových souborech.

K oddělení oddělovacích znaků musíme použít zpětné lomítko \.

Chcete-li například nahradit /bin/zsh /usr/bin/bash, spusťte:

$ sed -i 's/\/bin\/zsh/\/usr\/bin\/bash/g' test.txt


Rekurzivní hledání a nahrazení

V mnoha případech chcete rekurzivně vyhledávat v adresářích soubory, které mají určitý řetězec, a nahradit tento řetězec ve všech souborech.

Například následující příkaz vyhledá a nahradí řetězec 'apt' řetězcem 'road' ve všech souborech v aktuálním adresáři.

$ find . -type f -exec sed -i 's/apt/road/g' {} +

Pokud názvy souborů obsahují mezery, použijte volbu -print0:

$ find . -type f -print0 | xargs -0 sed -i 's/way/road/g'

Chcete-li vyhledat a nahradit řetězec pouze u souborů, které mají určitou příponu, spusťte:

$ find . -type f -name "*.java" -print0 | xargs -0 sed -i 's/apt/road/g'



Ubuntu
  1. Jak používat příkaz Grep k vyhledání textu v souborech

  2. Přidat a odebrat uživatele na Ubuntu 20.04 – Jak provést tento úkol?

  3. Seznam nainstalovaných balíčků v Ubuntu 20.04 – Jak provést tento úkol?

  1. Jak používat příkaz Linux Shutdown Command v Ubuntu 18.04 a CentOS 7

  2. Jak použít Sed k výměně víceřádkového řetězce?

  3. Jak používat příkaz string v Ubuntu

  1. Jak používat sed k vyhledání a nahrazení řetězce v souborech

  2. Jak nainstalovat a používat Curl Command na Ubuntu 20.04

  3. Jak nahradit řetězec ve více souborech v příkazovém řádku linuxu