Sed
pomeni urejevalnik tokov. Je urejevalnik, ki temelji na ukazni vrstici za Linux. Priljubljena uporaba sed je za urejanje datotek kot del skripta za avtomatizacijo v Linuxu, saj običajni urejevalniki zahtevajo aktiven uporabniški vnos in ne morejo urejati datotek zunaj zaslonov urejevalnika. Sed se najpogosteje uporablja za iskanje in zamenjavo iz ukazne vrstice.
To vrsto urejevalnika besedila lahko razvrstimo tudi kot neinteraktivni urejevalnik besedil.
Oglejmo si nekaj pogostih možnosti za urejanje datotek s Sed. Za primer bomo vzeli naslednjo datoteko:
$: cat test.txt Hiter rjav pes je skočil čez leno mačko. operacijski sistem Linux. Gozd blizu mojega doma ima tako mačko kot volkove.
Išči in zamenjaj
Če želite poiskati niz v datoteki in ga zamenjati z drugim nizom, zaženite:
sed -i "s/cat/fox/g" test.txt
Tukaj, -jaz
flag naroči sed, da zapiše spremembe v datoteko. Brez te zastave, sed
bo samo prikazal datoteko s spremenjenim nizom.
V narekovajih imamo s/mačka/lisica/g
. The s
je za ukaz za iskanje in zamenjavo sed
. Nato imamo niz, ki ga je treba iskati, kar je mačka
. Nato niz, s katerim ga želite zamenjati, tj. lisica
. Končno imamo izbirno g
, ki daje navodila sed
zamenjati vse pojavitve v vseh vrsticah datoteke. Brez g
, bo sed nadomestil samo prvo pojavljanje mačka
na vsaki vrstici.
Tukaj lahko uporabite tudi Regex.
sed -i "s/f[a-z]*\./cat\./g"
Vstavi
Če želite vstaviti besedilo pred vrstico z ujemajočim se nizom, uporabite:
sed -i "/cat/i Start:" test.txt
tukaj, mačka
je iskani niz in Začetek:
je niz, ki ga vnesete pred vrstico, kjer je najden iskani niz.
Podobno za vstavljanje besedila za vrstico uporabite:
sed -i "/fox/a Konec." test.txt
Izbriši
Če želite izbrisati vrstico, ki vsebuje podniz, uporabite:
sed -i "/Linux/d" test.txt
Če želite izbrisati vrstico s številko vrstice, npr. prva vrstica, uporabite:
sed -i '1d' test.txt
Kombinacija več funkcij
Za kombiniranje več funkcij, npr. iskanje in zamenjava, brisanje v enem ukazu, -e
lahko uporabite zastavo.
sed -i -e "s/fox/cat/g" -e '2d' test.txt
? Na zdravje!