Sådan bruges Sed i Linux

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!