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.