sed

príkaz na nahradenie reťazca v súbore

príkaz na nahradenie reťazca v súbore
Kedykoľvek pracujeme s akýmkoľvek typom súborov, je veľmi častým zvykom tieto súbory upravovať vyhľadaním a nahradením slov. Väčšina textových editorov poskytuje rôzne metódy založené na grafickom používateľskom rozhraní na vykonávanie týchto úprav. Občas však potrebujete spôsob, ako nájsť a nahradiť slová v súbore prostredníctvom terminálu. Preto vás v tomto článku prevedieme metódou použitia príkazu sed na nahradenie reťazca v textovom súbore. Posvietime si tiež na rôzne scenáre, v ktorých je možné tento príkaz použiť.

Poznámka: Na demonštráciu použitia príkazu sed na nahradenie reťazca v súbore budeme používať Linux Mint 20. Ak chcete, môžete použiť aj akúkoľvek inú príchuť systému Linux.

Použitie príkazu sed:

Teraz vám ukážeme niekoľko veľmi zaujímavých príkladov zobrazujúcich použitie 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 demonštráciu:

Na demonštráciu použitia príkazu sed by sme chceli pracovať s textovým súborom. Môžete však dokonca vytvoriť súbor Bash alebo akýkoľvek iný súbor podľa vášho výberu. Po druhé, vytvoríme súbor v domovskom adresári, aby sme pri prístupe k tomuto súboru nemuseli špecifikovať žiadne zložité cesty. Pri vytváraní textového súboru by sa mali vykonať nasledujúce kroky:

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

Teraz vytvorte nový textový súbor v domovskom adresári tak, že kliknete pravým tlačidlom myši kdekoľvek tam a potom vyberiete možnosť Nový dokument z kaskádovej ponuky a voľbu Prázdny dokument z vedľajšej kaskádovej ponuky. Po vytvorení textového súboru mu dajte vhodný názov. Pre tento konkrétny príklad som to pomenoval ako sed.TXT.

Dvojitým kliknutím na tento súbor ho otvoríte a zadajte doň ľubovoľný náhodný 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 zavrite.

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

Po spustení terminálu v systéme Linux Mint 20 môžete postupne prechádzať 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 /' súbor.TXT

Tu musíte FindWord nahradiť slovom, ktoré chcete nahradiť, a ReplaceWord slovom, ktoré sa má nahradiť. Okrem toho musíte súbor „file“ nahradiť názvom súboru, v ktorom chcete tieto náhrady vykonať. V tomto scenári som nahradil FindWord sedom a ReplaceWord nahradil. Názov nášho súboru bol sed.TXT. Je to tiež zobrazené na nasledujúcom obrázku:

Úspešné vykonanie tohto príkazu vám ukáže zmeny, ku ktorým došlo v dôsledku spustenia 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 alternatívnym scenárom. Občas 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. Za týmto účelom môžete vykonať nasledujúci príkaz:

súbor $ sed / FindWord / ReplaceWord / num '.TXT

Tu musíte FindWord nahradiť slovom, ktoré chcete nahradiť, a ReplaceWord slovom, ktoré sa má nahradiť. Okrem toho musíte tiež nahradiť „súbor“ názvom súboru, v ktorom chcete tieto náhrady vykonať. V tomto scenári som nahradil FindWord replace a ReplaceWord sedom. Názov nášho súboru bol sed.TXT. Číslo num tiež označuje výskyt alebo pozíciu slova, ktoré sa má nahradiť. V demonštrovanom príklade chcem nahradiť prvý výskyt nahradenia sed v každom riadku, ako je znázornené na obrázku nižšie:

Úspešné vykonanie tohto príkazu vám ukáže zmeny, ku ktorým došlo v dôsledku spustenia 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. Aby ste to dosiahli, musíte výslovne uviesť konkrétne číslo riadku v nasledujúcom príkaze:

$ sed 'LineNum s / FindWord / ReplaceWord /' súbor.TXT

Tu musíte FindWord nahradiť slovom, ktoré chcete nahradiť, a ReplaceWord slovom, ktoré sa má nahradiť. Okrem toho musíte tiež nahradiť „súbor“ názvom súboru, v ktorom chcete tieto náhrady vykonať. V tomto scenári som nahradil FindWord sed a ReplaceWord nahradením. Názov nášho súboru bol sed.TXT. Musíte tiež nahradiť LineNum číslom riadku konkrétneho riadku, v ktorom chcete vykonať nahradenie. V tomto príklade sme chceli nahradiť sed s nahradiť 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 v dôsledku spustenia tohto príkazu na vašom termináli. Môžete ľahko overiť, že k uvedeným zmenám došlo iba na riadku č. 2 nášho súboru, a nie v celom texte.

Záver:

Kedykoľvek cítite potrebu nahradiť ktorékoľvek slovo v súbore, úplne prvou vecou, ​​ktorú musíte urobiť, je identifikovať konkrétnu požiadavku, i.e. či chcete nahradiť konkrétne slovo v celom súbore, alebo či chcete nahradiť konkrétny výskyt daného slova, alebo či chcete dané slovo nahradiť konkrétnym riadkom. Po identifikácii konkrétneho scenára môžete použiť túto konkrétnu metódu z príkladov diskutovaných v tomto článku.

Hry Najlepšie hry z príkazového riadku pre systém Linux
Najlepšie hry z príkazového riadku pre systém Linux
Príkazový riadok nie je pri použití systému Linux iba vaším najväčším spojencom - môže byť tiež zdrojom zábavy, pretože ho môžete použiť na hranie mno...
Hry Najlepšie aplikácie na mapovanie gamepadu pre Linux
Najlepšie aplikácie na mapovanie gamepadu pre Linux
Ak radi hráte hry v systéme Linux s gamepadom namiesto typického systému vstupu pre klávesnicu a myš, máte tu niekoľko užitočných aplikácií. Mnoho hie...
Hry Užitočné nástroje pre hráčov systému Linux
Užitočné nástroje pre hráčov systému Linux
Ak radi hráte hry v systéme Linux, je pravdepodobné, že ste na vylepšenie herného zážitku použili aplikácie a pomôcky ako Wine, Lutris a OBS Studio. O...