Sed
står for stream editor. Det er en kommandolinjebaseret editor til Linux. Populær brug af sed er til at redigere fil(er) som en del af et automatiseringsscript i Linux, som sædvanlige redaktører kræver aktivt brugerinput og kan ikke redigere filer uden for editorens skærme. Sed bruges oftest til at finde og erstatte fra kommandolinjen.
Denne type teksteditor kan også kategoriseres som en ikke-interaktiv teksteditor.
Lad os se nogle almindelige muligheder for at redigere filer ved hjælp af Sed. Vi tager følgende fil som eksempel:
$: cat test.txt En hurtig brun hund hoppede over den dovne kat. Linux operativsystem. Skoven nær mit sted har en kat såvel som ulve.
Søg og erstat
For at søge efter en streng i en fil og erstatte med en anden streng, kør:
sed -i "s/cat/fox/g" test.txt
Her, den -jeg
flag instruerer sed om at skrive ændringerne til filen. Uden dette flag, sed
vil blot vise filen med den ændrede streng.
I citaterne har vi s/kat/ræv/g
. Det s
er til kommandoen søg og erstat sed
. Så har vi den streng, der skal søges i, dvs kat
. Derefter strengen til at erstatte den med, dvs. Ræv
. Endelig har vi det valgfrie g
, som instruerer sed
for at erstatte alle forekomster på alle linjer i filen. Uden g
, vil sed kun erstatte første forekomst af kat
på hver linje.
Regex kan også bruges her.
sed -i "s/f[a-z]*\./cat\./g"
Indsæt
For at indsætte tekst før en linje med en matchende streng, brug:
sed -i "/cat/i Start:" test.txt
Her, kat
er den søgte streng og Start:
er den streng, der skal indtastes før linjen, hvor den søgte streng er fundet.
Tilsvarende, for at indsætte tekst efter en linje, brug:
sed -i "/fox/a End." test.txt
Slet
For at slette en linje, der indeholder en understreng, skal du bruge:
sed -i "/Linux/d" test.txt
For at slette en linje med linjenummer, f.eks. den første linje, brug:
sed -i '1d' test.txt
Kombinerer flere funktioner
For at kombinere flere funktioner, f.eks. søg og erstat, slet, i én kommando, -e
flag kan bruges.
sed -i -e "s/fox/cat/g" -e '2d' test.txt
? Skål!