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.TXTTu 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 '.TXTTu 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.TXTTu 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.