GNU/Linux >> Znalost Linux >  >> Linux

Jak najít a nahradit text, slovo nebo řetězec v souboru

Pokud se vám podaří nahlédnout hlouběji do ekosystému prostředí operačního systému Linux, zjistíte, že jeho vestavěné příkazy jsou dostatečné k vyřešení většiny našich počítačových problémů.

Jedním takovým problémem je potřeba najít a nahradit text, slovo nebo řetězec v souboru, zvláště když jste v prostředí serveru. Řešení tohoto problému vám umožní zvládnout nepříjemné problémy, jako je aktualizace „/etc/apt/sources.list ” po úspěšném upgradu systému Linux.

Vytvoření testovacího textového souboru v Linuxu

Vytvořte textový soubor s názvem jako „test.txt ” a naplňte jej nějakým textem, slovem nebo řetězcovými znaky. Nechte tento soubor být ve stejné cestě jako vaše instance terminálu.

$ nano test.txt
OR
$ vi test.txt 

K flexibilnímu zaznamenávání změn v našem vytvořeném testovacím souboru použijeme příkaz cat.

$ cat test.txt

Použití Sed k vyhledání a nahrazení textu, slova nebo řetězce v souboru

Síla tohoto editoru proudů je v jeho jednoduchosti provádění základních transformací vstupních proudů. Příkaz sed nabízí rychlý, snadný a nadčasový přístup při hledání a nahrazování cíleného textu, slov nebo řetězců v souboru.

Najděte a nahraďte první výskyty textu, slova nebo řetězce v souboru

Z našeho vytvořeného testovacího souboru budeme aktualizovat všechny výskyty slova „LinuxShellTips “ s alternativou „tento web “. Syntaxe příkazu sed budeme používat k provedení tohoto jednoduchého úkolu je následující:

$ sed -i 's/[THE_OLD_TERM]/[THE_NEW_TERM]/' [TARGETED_FILE] 

S odkazem na výše uvedený příkaz sed použití a syntaxi, můžeme nahradit „LinuxShellTips našeho testovacího souboru “ s výrazem „tento web ” výraz takto:

$ sed -i 's/LinuxShellTips/this site/' test.txt

Nyní můžeme použít příkaz cat zobrazit náhled výše navržených změn v našem testovacím souboru, abyste si všimli, zda došlo k nějakým podstatným úpravám.

$ cat test.txt

Jak vidíte, první dva výskyty slova „LinuxShellTips “ byly nahrazeny frází „tento web “.

Najít a nahradit všechny výskyty textu, Wordu nebo řetězce v souboru

Navzdory tomu, že výše uvedený příkaz nahradil všechny cílené vzorce slov v našem testovacím souboru, jeho použití je ve většině případů selektivní. Příkaz funguje nejlépe pro malé soubory, protože ve velkých souborech může mít z funkce „najít a nahradit prospěch pouze několik prvních výskytů cíleného vzoru slova. ' udatnost.

Chcete-li najít a nahradit všechny výskyty vzoru slova v libovolném upravitelném souboru, měli byste dodržovat následující příkaz sed syntaxe.

$ sed -i 's/[THE_OLD_TERM]/[THE_NEW_TERM]/g' [TARGETED_FILE]    

Jak jste si všimli, 'g' ve výše uvedené syntaxi příkazu find &replacement funguje jako globální proměnná, takže jsou brány v úvahu všechny globální výskyty výrazu v cílovém souboru.

$ sed -i 's/this site/LinuxShellTips/g' test.txt

Výše uvedený příkaz najde všechny globální výskyty výrazu „tento web “ a nahrazuje jej pojmem „LinuxShellTips “.

Použití Awk k vyhledání a nahrazení textu, Wordu nebo řetězce v souboru

Pokud znáte nástroj příkazového řádku awk, pak víte, že jeho výkonné metriky skriptovacího jazyka z něj dělají profesionála ve zpracování textu. Správci systému Linux a profesionální uživatelé považují tento nástroj za účinný při extrakci dat a vytváření sestav.

Příkaz awk syntaxe jednoduché operace hledání a nahrazení vypadá jako následující úryvek:

$ awk '{gsub("[THE_OLD_TERM]","[THE_NEW_TERM]"); print}' [TARGETED_FILE]

Ve výše uvedené syntaxi awk nahradí THE_OLD_TERM od THE_NEW_TERM v TARGETED_FILE a vytiskněte výsledný obsah souboru na systémovém terminálu.

Vezměme si praktický přístup:

$ awk '{gsub("Linux","ubuntu"); print}' test.txt

S dynamickými funkcemi obou sed a awk příkazové nástroje, měli byste nyní najít, nahradit a přepsat vzory textu, slov nebo řetězců v cílovém souboru. Tyto nástroje poskytují uživateli systému potřebnou flexibilitu při používání rozhraní příkazového řádku.


Linux
  1. najít odpovídající text a nahradit další řádek

  2. Najděte a nahraďte text v souboru mezi rozsahy řádků pomocí sed

  3. Jak najít index slova v řetězci v bash?

  1. Jak používat Awk a regulární výrazy k filtrování textu nebo řetězců v souborech

  2. Jak nahradit řetězec v souboru (souborech)?

  3. Jak zjistit typ souboru Img a připojit jej?

  1. Jak najít nesrovnatelné závorky v textovém souboru?

  2. Jak zjistit konce řádků v textovém souboru?

  3. Použití grep a sed k nalezení a nahrazení řetězce