Kako uporabljati Sed v Linuxu

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!