sed Príkaz na nahradenie reťazca v súbore

Sed Command Replace String File



Kedykoľvek pracujeme s akýmkoľvek druhom súborov, je veľmi bežnou praxou vykonávať úpravy týchto súborov vyhľadávaním a nahrádzaním slov. Väčšina textových editorov poskytuje na vykonávanie týchto úprav rôzne metódy založené na GUI. Niekedy však potrebujete spôsob, ako nájsť a nahradiť slová v súbore prostredníctvom terminálu. V tomto článku vás preto prevedieme metódou použitia príkazu sed na nahradenie reťazca v textovom súbore. Tiež si posvietime na rôzne scenáre, v ktorých je možné tento príkaz použiť.

Poznámka: Na ukážku použitia príkazu sed na nahradenie reťazca v súbore použijeme Linux Mint 20. Ak chcete, môžete použiť aj inú verziu Linuxu.







Použitie príkazu sed:

Teraz vám ukážeme niekoľko veľmi zaujímavých príkladov na zobrazenie použitia príkazu sed v systéme Linux. Pozrime sa, ako tento príkaz funguje v rôznych scenároch.



Vytvorenie textového súboru na ukážku:

Na ukážku použitia príkazu sed by sme chceli pracovať s textovým súborom. Môžete však dokonca vytvoriť súbor Bash alebo iný súbor podľa vlastného výberu. Za druhé, vytvoríme súbor v domovskom adresári, aby sme pri prístupe k tomuto súboru nemuseli zadávať žiadne zložité cesty. Pri vytváraní textového súboru je potrebné vykonať nasledujúce kroky:



Kliknite na ikonu Správca súborov umiestnenú na paneli úloh Linux Mint 20:





Teraz vytvorte nový textový súbor v domovskom adresári kliknutím pravým tlačidlom myši kamkoľvek tam a potom zvolením možnosti Nový dokument z kaskádovej ponuky a možnosti Prázdny dokument z subkaskádovej ponuky. Keď je textový súbor vytvorený, pomenujte ho vhodným názvom. Pre tento konkrétny príklad som ho pomenoval ako sed.txt.



Dvojitým kliknutím na tento súbor ho otvoríte a napíšte doň ľubovoľný text, ako je to znázornené na obrázku nižšie. Uložte tento textový súbor stlačením klávesov Ctrl +S a potom ho zatvorte.

Teraz spustite terminál v Linux Mint 20, ako je znázornené na nasledujúcom obrázku:

Po spustení terminálu v Linux Mint 20 si môžete postupne prejsť všetky nižšie uvedené príklady.

Použitie príkazu sed na nahradenie všetkých výskytov daného slova:

Príkaz sed môžete použiť na nahradenie všetkých výskytov daného slova v textovom súbore. Syntax dosiahnutia tohto cieľa je uvedená nižšie:

$sed'S/sed/FindWord/ReplaceWord/‘File.txt

Tu musíte nahradiť FindWord slovom, ktoré chcete nahradiť, a ReplaceWord slovom, ktoré má byť nahradené. Okrem toho musíte tiež nahradiť súbor názvom súboru, v ktorom chcete vykonať tieto náhrady. V tomto scenári som nahradil FindWord za sed a ReplaceWord za nahradiť. Náš názov súboru bol sed.txt. Je to tiež znázornené na nasledujúcom obrázku:

Úspešné vykonanie tohto príkazu vám ukáže zmeny, ku ktorým došlo kvôli spusteniu tohto príkazu na vašom termináli:

Použitie príkazu sed na nahradenie n -tého výskytu daného slova v každom riadku:

Vyššie uvedený scenár bol najjednoduchším náhradným scenárom, niekedy však nechcete nahradiť všetky výskyty slova, ale chcete nahradiť iba prvý, druhý alebo n -tý výskyt tohto slova vo všetkých riadkoch. Na tento účel môžete vykonať nasledujúci príkaz:

$sed'S/FindWord/ReplaceWord/num ’file.txt

Tu musíte nahradiť FindWord slovom, ktoré chcete nahradiť, a ReplaceWord slovom, ktoré má byť nahradené. Okrem toho musíte tiež nahradiť súbor názvom súboru, v ktorom chcete vykonať tieto náhrady. V tomto scenári som nahradil FindWord replace a ReplaceWord za sed. Náš názov súboru bol sed.txt. Číslo sa tiež týka výskytu alebo polohy slova, ktoré sa má nahradiť. V uvedenom príklade chcem nahradiť prvý výskyt nahradenia sed v každom riadku, ako je to znázornené na obrázku nižšie:

Úspešné vykonanie tohto príkazu vám ukáže zmeny, ku ktorým došlo kvôli spusteniu tohto príkazu na vašom termináli:

Použitie príkazu sed na nahradenie daného slova v konkrétnom riadku:

Niekedy chcete iba nahradiť dané slovo v konkrétnom riadku, a nie v celom dokumente. Na to musíte výslovne zadať konkrétne číslo riadka v nasledujúcom príkaze:

$sed„LineNum s/FindWord/ReplaceWord/‘File.txt

Tu musíte nahradiť FindWord slovom, ktoré chcete nahradiť, a ReplaceWord slovom, ktoré má byť nahradené. Okrem toho musíte tiež nahradiť súbor názvom súboru, v ktorom chcete vykonať tieto náhrady. V tomto scenári som nahradil FindWord sed a ReplaceWord za nahradiť. Náš názov súboru bol sed.txt. Tiež musíte nahradiť LineNum číslom riadku konkrétneho riadku, v ktorom chcete vykonať výmenu. V tomto prípade sme chceli nahradiť sed nahradením v riadku číslo 2 nášho súboru, ako je znázornené na nasledujúcom obrázku:

Úspešné vykonanie tohto príkazu vám ukáže zmeny, ku ktorým došlo kvôli spusteniu tohto príkazu na vašom termináli. Môžete ľahko overiť, že uvedené zmeny nastali iba na riadku číslo 2 nášho súboru a nie v celom texte.

Záver:

Kedykoľvek cítite potrebu nahradiť akékoľvek slovo v súbore, úplne prvá vec, ktorú musíte urobiť, je identifikovať vašu konkrétnu požiadavku, tj či chcete nahradiť konkrétne slovo v celom súbore alebo chcete nahradiť konkrétny výskyt konkrétne slovo alebo ho chcete nahradiť v konkrétnom riadku. Akonáhle identifikujete svoj konkrétny scenár, potom môžete použiť túto konkrétnu metódu z príkladov diskutovaných v tomto článku.