SED-kommandoen i UNIX står for stream editor og den kan utføre mange funksjoner på filen som å søke, finne og erstatte, sette inn eller slette. Selv om den vanligste bruken av SED-kommandoen i UNIX er for substitusjon eller for å finne og erstatte. Ved å bruke SED kan du redigere filer selv uten å åpne dem, noe som er en mye raskere måte å finne og erstatte noe i filen, enn først å åpne den filen i VI Editor og deretter endre den.
- SED er en kraftig tekststrømredigerer. Kan gjøre innsetting, sletting, søk og erstatning (erstatning).
- SED-kommandoen i unix støtter regulært uttrykk som lar det utføre kompleks mønstertilpasning.
Syntaks:
sed OPTIONS... [SCRIPT] [INPUTFILE...]>
Eksempel:
Betrakt tekstfilen nedenfor som en input.
$cat>geekfile.txt>
unix is great os. unix is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
Eksempel på kommandoer
- Erstatte eller erstatte streng: Sed-kommandoen brukes mest til å erstatte teksten i en fil. Den enkle sed-kommandoen nedenfor erstatter ordet unix med linux i filen.
$sed 's/unix/linux/' geekfile.txt>
Utgang:
linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
Her spesifiserer s-en substitusjonsoperasjonen. / er skilletegn. Unix er søkemønsteret og linux er erstatningsstrengen.
Som standard erstatter sed-kommandoen den første forekomsten av mønsteret i hver linje, og den vil ikke erstatte den andre, tredje … forekomsten i linjen. Erstatte den n-te forekomsten av et mønster i en linje : Bruk /1, /2 etc flaggene for å erstatte den første, andre forekomsten av et mønster på en linje. Kommandoen nedenfor erstatter den andre forekomsten av ordet unix med linux på en linje.
$sed 's/unix/linux/2' geekfile.txt>
Produksjon:
unix is great os. linux is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.linux is a multiuser os.Learn unix .unix is a powerful.>Erstatte all forekomst av mønsteret i en linje : Erstatningsflagget /g (global erstatning) spesifiserer sed-kommandoen for å erstatte alle forekomstene av strengen i linjen.
$sed 's/unix/linux/g' geekfile.txt>
Utgang:
linux is great os. linux is opensource. linux is free os. learn operating system. linux linux which one you choose. linux is easy to learn.linux is a multiuser os.Learn linux .linux is a powerful.>Erstatte fra n-te forekomst til alle forekomster i en linje : Bruk kombinasjonen av /1, /2 osv. og /g for å erstatte alle mønstrene fra den n-te forekomsten av et mønster i en linje. Følgende sed-kommando erstatter det tredje, fjerde, femte... unix-ordet med linux-ord på en linje.
$sed 's/unix/linux/3g' geekfile.txt>
Produksjon:
unix is great os. unix is opensource. linux is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn linux .linux is a powerful.>Sett i parentes det første tegnet i hvert ord : Dette sed-eksemplet skriver ut det første tegnet i hvert ord i parentes.
$ echo 'Welcome To The Geek Stuff' | sed 's/([A-Z])/(1)/g'>
Produksjon:
fjerner siste commit git
(W)elcome (T)o (T)he (G)eek (S)tuff>Erstatte streng på et spesifikt linjenummer: Du kan begrense sed-kommandoen til å erstatte strengen på et spesifikt linjenummer. Et eksempel er
$sed '3 s/unix/linux/' geekfile.txt>
Produksjon:
unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
Ovennevnte sed-kommando erstatter strengen bare på den tredje linjen. Duplisere den erstattede linjen med /p-flagget: /p-utskriftsflagget skriver ut den erstattede linjen to ganger på terminalen. Hvis en linje ikke har søkemønsteret og ikke erstattes, skriver /p den linjen bare én gang.
$sed 's/unix/linux/p' geekfile.txt>
Produksjon:
linux is great os. unix is opensource. unix is free os. linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>Skrive ut bare de erstattede linjene : Bruk alternativet -n sammen med /p-utskriftsflagget for å vise bare de erstattede linjene. Her undertrykker alternativet -n de dupliserte radene generert av /p-flagget og skriver ut de erstattede linjene bare én gang.
$sed -n 's/unix/linux/p' geekfile.txt>
Produksjon:
linux is great os. unix is opensource. unix is free os. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
Hvis du bruker -n alene uten /p, så skriver ikke sed ut noe. Erstatte streng på en rekke linjer: Du kan spesifisere en rekke linjenumre til sed-kommandoen for å erstatte en streng.
$sed '1,3 s/unix/linux/' geekfile.txt>
Produksjon:
linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
Her erstatter sed-kommandoen linjene med rekkevidde fra 1 til 3. Et annet eksempel er
$sed '2,$ s/unix/linux/' geekfile.txt>
Produksjon:
unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful>
Her indikerer $ den siste linjen i filen. Så sed-kommandoen erstatter teksten fra andre linje til siste linje i filen. Slette linjer fra en bestemt fil : SED-kommandoen kan også brukes til å slette linjer fra en bestemt fil. SED-kommandoen brukes til å utføre sletteoperasjon uten engang å åpne filen
Eksempler:
1. For å slette en bestemt linje si n i dette eksemplet
Syntax: $ sed 'nd' filename.txt Example: $ sed '5d' filename.txt>
2. For å slette en siste linje
Syntax: $ sed '$d' filename.txt>
3. For å slette linje fra område x til y
Syntax: $ sed 'x,yd' filename.txt Example: $ sed '3,6d' filename.txt>
4. For å slette fra n'te til siste linje
Syntax: $ sed 'nth,$d' filename.txt Example: $ sed '12,$d' filename.txt>
5. For å slette mønstertilsvarende linje
Syntax: $ sed '/pattern/d' filename.txt Example: $ sed '/abc/d' filename.txt>
SED-kommando i Linux | Sett 2