Hvordan bruke Sed i Linux

Sed står for stream editor. Det er en kommandolinjebasert editor for Linux. Populær bruk av sed er for å redigere fil(er) som en del av et automatiseringsskript i Linux, som vanlig krever redaktører aktiv brukerinndata og kan ikke redigere filer utenfor redigeringsskjermene. Sed brukes oftest for å finne og erstatte fra kommandolinjen.

Denne typen tekstredigering kan også kategoriseres som en ikke-interaktiv tekstredigerer.

La oss se noen vanlige alternativer for å redigere filer ved hjelp av Sed. Vi tar følgende fil som eksempel:

$: cat test.txt En rask brun hund hoppet over den late katten. Linux operativsystem. Skogen i nærheten av mitt sted har en katt så vel som ulv. 

Søk og erstatt

For å søke etter en streng i en fil og erstatte med en annen streng, kjør:

sed -i "s/cat/fox/g" test.txt

Her, den -Jeg flagget instruerer sed om å skrive endringene til filen. Uten dette flagget, sed vil bare vise filen med den endrede strengen.

I sitatene har vi s/katt/rev/g. De s er for søk og erstatt-kommandoen til sed. Så har vi strengen som skal søkes i, som er katt. Deretter strengen for å erstatte den med, dvs. rev. Til slutt har vi det valgfrie g, som instruerer sed for å erstatte alle forekomster på alle linjene i filen. Uten g, vil sed kun erstatte første forekomst av katt på hver linje.

Regex kan også brukes her.

sed -i "s/f[a-z]*\./cat\./g"

Sett inn

For å sette inn tekst før en linje med en samsvarende streng, bruk:

sed -i "/cat/i Start:" test.txt

Her, katt er den søkte strengen og Start: er strengen som skal legges inn før linjen der den søkte strengen er funnet.

På samme måte, for å sette inn tekst etter en linje, bruk:

sed -i "/fox/a End." test.txt

Slett

For å slette en linje som inneholder en understreng, bruk:

sed -i "/Linux/d" test.txt

For å slette en linje med linjenummer, f.eks. den første linjen, bruk:

sed -i '1d' test.txt

Kombinere flere funksjoner

For å kombinere flere funksjoner, f.eks. søk og erstatt, slett, i én kommando, -e flagg kan brukes.

sed -i -e "s/fox/cat/g" -e '2d' test.txt

? Jubel!