Sed
står för stream editor. Det är en kommandoradsbaserad redigerare för Linux. Populär användning av sed är för att redigera fil(er) som en del av ett automatiseringsskript i Linux, som vanligt kräver redigerare aktiv användarinmatning och kan inte redigera filer utanför redigeringsskärmarna. Sed används oftast för att hitta och ersätta från kommandoraden.
Denna typ av textredigerare kan också kategoriseras som en icke-interaktiv textredigerare.
Låt oss se några vanliga alternativ för att redigera filer med Sed. Vi tar följande fil som exempel:
$: cat test.txt En snabb brun hund hoppade över den lata katten. Linux operativsystem. Skogen nära min plats har en katt såväl som vargar.
Sök och ersätt
För att söka efter en sträng i en fil och ersätta med en annan sträng, kör:
sed -i "s/cat/fox/g" test.txt
Här, den -jag
flaggan instruerar sed att skriva ändringarna i filen. Utan denna flagga, sed
kommer bara att visa filen med den ändrade strängen.
I citaten har vi s/katt/räv/g
. De s
är för kommandot sök och ersätt sed
. Sedan har vi strängen som ska sökas, dvs katt
. Sedan strängen att ersätta den med, dvs. räv
. Slutligen har vi det valfria g
, som instruerar sed
för att ersätta alla förekomster på alla rader i filen. Utan g
, sed ersätter endast första förekomsten av katt
på varje rad.
Regex kan också användas här.
sed -i "s/f[a-z]*\./cat\./g"
Föra in
För att infoga text före en rad med en matchad sträng, använd:
sed -i "/cat/i Start:" test.txt
Här, katt
är den sökta strängen och Start:
är strängen som ska anges före raden där den sökta strängen finns.
På liknande sätt, för att infoga text efter en rad, använd:
sed -i "/fox/a End." test.txt
Radera
För att ta bort en rad som innehåller en delsträng, använd:
sed -i "/Linux/d" test.txt
För att radera en rad med radnummer, t.ex. den första raden, använd:
sed -i '1d' test.txt
Kombinera flera funktioner
För att kombinera flera funktioner, t.ex. sök och ersätt, ta bort, i ett kommando, -e
flaggan kan användas.
sed -i -e "s/fox/cat/g" -e '2d' test.txt
? Skål!