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!