Hva er SED i Linux og hvordan brukes det?
tørst betyr s strøm utg itor og er en ofte brukt kommando på Linux/Unix. Navnet kommer fra en samling av disse to ordene. Det er ikke et tekstredigeringsprogram, selv om det endrer teksten. I stedet mottar sed teksten som en "strøm" og redigerer strømmen i henhold til instruksjonene.
Generelt bruker folk sed som en kommandolinjeversjon av finn og erstatt. Hovedkommandoen til programmet brukes til å erstatte en streng med tegn med en annen. Dette gjør det nyttig for å kjøre søk og erstatt på en gruppe filer, men det er ikke så brukervennlig som noe i Notisblokk eller Word. Du vil oppdage at syntaksen krever litt tilvenning, men når du først har fått den ned, vil du se hvor utrolig kraftig denne kompakte editoren kan være.
Bruker sed for substitusjon
For å bruke sed, må du åpne et terminalvindu. Kommandoen påkalles med sed, men å skrive det alene vil ikke gjøre noe. Du må oppgi en av kommandoene samt noen parametere.
Den vanligste parameteren er erstatning, eller s. En enkel sedimenterstatningskommando ser omtrent slik ut:
sed 's/katt/hund/'
Den kommandoen vil instruere Sed til å skanne den innkommende teksten og erstatte hver forekomst av strengen "katt" med "hund". For å demonstrere dette, bruker vi ekko-kommandoen for å gi deg noe å jobbe med.
echo catapulta | sed 's/cat/dog/'
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
Det er tre hoveddeler til sed-kommandoen. Først er det en ssd som starter programmet. Så er det swhen som starter erstatningskommandoen. Skråstreken / er en skilletegn. Strengen etter det vil være strengen beroligende midlet er ute etter. Strengen etter den andre skråstreken vil være erstatningstegnene som sed skriver til strømmen. Den siste skråstreken lukker kommandoen. Til sammen er det 's/text-to-find/text-to-replace/'.
Legg merke til de enkle anførselstegnene i det eksemplet. Enkelte anførselstegn lar deg bruke metategn i kommandoen. Selv om sitater ikke er avgjørende for de fleste av eksemplene våre, bør du utvikle en vane med å bruke anførselstegn for alle kommandoer.
Hva med delstrenger? Kommandoen ovenfor vil fungere på ethvert utseende av strengen "katt", selv om det er en del av et annet ord. For eksempel vil "katapult" bli "dogapult" som "katamaran" vil bli "dogamaran."
ekkokatapult | sed 's/katt/hund/'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>.
generell erstatning
I vårt første eksempel har du kanskje lagt merke til at bare den første forekomsten av den samsvarende strengen ble erstattet. Som mange GNU-verktøy, er sed linjebasert. Som et resultat fungerer det bare på den første kampen innenfor en linje. Hvis du har flere treff for kandidatstrengen din i linjen, vil bare den første bli endret. For å få sed til å fungere på hver forekomst av målstrengen, bruk g-flagget på slutten av kommandoen:
sed 's/katt/hund/g'
Dette vil fungere som i følgende eksempel:
ekko katamaran | sed 's/katt/hund/g'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>.
Uten det globale flagget ville bare den første forekomsten av "katt" på hver linje blitt erstattet.
Konfigurasjon av inn- og utdatafiler
Som standard vil sed operere på standard input. Det er imidlertid ikke særlig nyttig. For å kjøre sed på en fil, spesifiser filnavnet på slutten av kommandoen, slik:
nyfil.txt.
Dette vil kjøre sed på "oldfile.txt" og lagre utdataene fra kommandoen til "newfile.txt". Hvis "newfile.txt" ikke eksisterer, vil den bli opprettet av kommandoen. Hvis du ikke spesifiserer en utdatafil, vil sed ekko den nye teksten fra filen til standardinndata.
Hvis du vil overskrive innholdet i en fil, må du bruke -iflag. Dette flagget gjør endringer "på plass".
sed -i '' 's/cat/dog' oldfile.txt
Denne kommandoen overskriver umiddelbart innholdet i målfilen, noe som er litt farlig. For å være på den sikre siden kan du lage en sikkerhetskopi på stedet.
For å lage en sikkerhetskopi av filen, sett en utvidelse etter -i. Det trenger ikke å være en funksjonell utvidelse: ".bu" eller ".bak" fungerer fint. Dette vil opprette en sikkerhetskopifil med en.
sed -i.bak 's/cat/dog' oldfile.txt
Dette lager "oldfile.txt.bak", som inneholder råtekstdataene til den originale versjonen av "oldfile.txt".
Match regulære uttrykk
Den sanne kraften til sed er avledet fra å kombinere regulære uttrykk. Dette lar deg angi matchende mønstre, i stedet for bokstavelige strenger. For eksempel kan vi bruke noe sånt som følgende streng for å gjenta et sett med ett eller flere tall:
ekko "123 abc" | tørstens/[0-9][0-9]*/&/&/'
ekstra læring
sed er et ekstremt kraftig verktøy med en kraftdybde som ligner på et skriptspråk. For mer informasjon om de fulle egenskapene til sed, se Bruce Barnetts komplette guide til tørst.
Hvis du vil lese flere artikler som Hva er SED i Linux og hvordan brukes det?, kan du besøke kategorien Linux.
Legg igjen en kommentar