Hur man använder Sed i Linux

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!