Ako používať Sed v Linuxe

Sed znamená stream editor. Je to editor založený na príkazovom riadku pre Linux. Populárne použitie sed je na úpravu súborov ako súčasť automatizačného skriptu v systéme Linux, pretože zvyčajne editory vyžadujú aktívny vstup používateľa a nemôžu upravovať súbory mimo obrazoviek editora. Sed sa najčastejšie používa na vyhľadávanie a nahradenie z príkazového riadku.

Tento typ textového editora možno tiež kategorizovať ako neinteraktívny textový editor.

Pozrime sa na niektoré bežné možnosti úpravy súborov pomocou Sed. Ako príklad použijeme nasledujúci súbor:

$: test mačiek.txt Rýchly hnedý pes preskočil lenivú mačku. Operačný systém Linux. V lese blízko môjho domu sú vlky aj mačky. 

Hľadať a nahradiť

Ak chcete vyhľadať reťazec v súbore a nahradiť ho iným reťazcom, spustite:

sed -i "s/cat/lis/g" test.txt

Tu, -i flag dáva pokyn sed, aby zapísal zmeny do súboru. Bez tejto vlajky, sed zobrazí iba súbor so zmeneným reťazcom.

V úvodzovkách máme s/mačka/líška/g. The s slúži na vyhľadávanie a nahradenie príkazu sed. Potom máme reťazec, ktorý sa má hľadať, čo je kat. Potom reťazec, ktorým ho nahradíte, t.j. líška. Nakoniec máme voliteľné g, ktorý nariaďuje sed nahradiť všetky výskyty na všetkých riadkoch súboru. Bez g, sed nahradí iba prvý výskyt kat na každom riadku.

Regex je možné použiť aj tu.

sed -i "s/f[a-z]*\./cat\./g"

Vložiť

Ak chcete vložiť text pred riadok so zhodným reťazcom, použite:

sed -i "/cat/i Start:" test.txt

Tu, kat je hľadaný reťazec a Štart: je reťazec, ktorý sa má zadať pred riadkom, kde sa nachádza hľadaný reťazec.

Podobne, ak chcete vložiť text za riadok, použite:

sed -i "/líška/a Koniec." test.txt

Odstrániť

Ak chcete odstrániť riadok obsahujúci podreťazec, použite:

sed -i "/Linux/d" test.txt

Ak chcete vymazať riadok s číslom riadku, napr. prvý riadok, použite:

sed -i '1d' test.txt

Kombinácia viacerých funkcií

Kombinácia viacerých funkcií, napr. vyhľadať a nahradiť, odstrániť, jedným príkazom, -e možno použiť vlajku.

sed -i -e "s/líška/mačka/g" -e '2d' test.txt

? Na zdravie!