Linux er et system fullt av kommandoer der hver enkelt spiller en vesentlig rolle i oppførselen til bestemte oppgaver, enten de er bruker-, objekt- eller støttehåndtering, hver kommando har sin deltakelse i Linux, og en av disse kommandoene er Sed som vi vil snakke om hos Solvetic i detaljer.
Hva er sed -kommandoen i LinuxSed -kommandoen er bokstavelig talt en flytredigerer som vi kan bruke for å endre arbeider på teksten med grunnleggende funksjoner i en inngangsflyt, enten fra en fil eller inndata fra en rørledning hvis det er aktuelt.
I motsetning til andre tekstredigerere, er det med sed mulig å filtrere tekst i en pipeline når vi går over det valgte innholdet.
FordelFordelene med å bruke sed på Linux er:
- Vi kan velge tekst
- Vi kan erstatte tekst
- Legg til linjer i teksten
- Vi kan fjerne linjer fra teksten
- Lar deg endre eller bevare en originalfil
Den generelle syntaksen for bruk av sed er som følger:
sed OPTIONS… [SCRIPT] [INPUT_FILE…]Vi vil lære noen måter å bruke denne kommandoen på Linux.
1. Slik bruker du SED -kommandoen i Linux
Grunnleggende bruk av sedFor dette eksemplet skal vi bruke "ekko" for å se hvordan sed -kommandoen kan erstatte en del av den angitte teksten, vi skriver inn:
ekko solvitisk | sed 's / vitic / vetic /'I dette tilfellet forteller vi sed å erstatte ordet "vitic" med "vetic", når du trykker Enter vil dette bli resultatet:
FORSTØRRE
Vi ser at endringen er automatisk.
2. Velge tekst med SED Linux -kommandoen
Trinn 1
I dette tilfellet vil vi ha en tekstfil som ligger på skrivebordet:
FORSTØRRE
Nå skal vi bruke følgende linje:
mindre Solvetic.txtSteg 2
Når du trykker Enter vil dette bli resultatet:
FORSTØRRE
Med sed er det mulig å velge noen linjer i filen, for dette må vi angi de første og siste linjene i området som skal velges, for eksempel hvis vi ønsker å trekke ut linjer to til syv vi utfører:
sed -n '2,7p' Solvetic.txtTrinn 3
Vi vil se følgende:
FORSTØRRE
Vi må huske kommaet i områdene som skal tilordnes (2,7), parameteren p indikerer at det betyr "skriv ut matchende linjer", med dette vil sed -kommandoen skrive ut alle linjene i det området og -n (stille ) alternativet passer på å ikke vise tekst som ikke samsvarer med dette området.
Trinn 4
Vi kan bruke parameteren -e (uttrykk) for å gjøre flere valg, for eksempel:
sed -n -e '1,2p' -e '5,6p' Solvetic.txt
FORSTØRRE
Trinn 5
Med sed er det mulig å velge startlinjen, så angir vi hvilken som skal krysses i filen og for å skrive ut de alternative linjene, for eksempel skriver vi inn:
sed -n '1 ~ 3p' Solvetic.txtI dette tilfellet refererer det første tallet til startlinjen og det andre tallet forteller sed hvilke linjer etter startlinjen som skal vises:
FORSTØRRE
Trinn 6
En annen bruk av sed er muligheten til å velge linjer der de matchende tekstmønstrene er, dette hvis vi ikke vet hvor linjenummeret stammer fra, kan vi utføre følgende:
sed -n ' / Run / p' Solvetic.txt
FORSTØRRE
Vi vil se linjene som starter med det begrepet.
3. Hvordan lage erstatninger med SED Linux
Trinn 1
I den grunnleggende delen så vi hvordan vi kan erstatte tekst med sed, der brukte vi parameteren -s (substitusjon). Deretter angir den første strengen søkemønsteret, og den andre refererer til teksten den skal erstattes med.
sed -n 's / task / actions / p' Solvetic.txtI dette eksemplet erstatter vi "oppgaver" med "handlinger":
FORSTØRRE
Steg 2
Med parameteren p sed stopper den automatisk etter den første kampen, for å utføre et globalt søk og gjøre endringen generelt må vi legge til "g":
sed -n 's / tasks / actions / gp' Solvetic.txtHvis vi vil at det ikke skal skille mellom store og små bokstaver, legger vi til "i":
sed -n 's / tasks / actions / gpi' Solvetic.txtTrinn 3
Det er mulig å opprette begrensninger på erstatninger bare til visse deler av filen, først viser vi linjene som skal analyseres:
sed -n '1,3p' Solvetic.txt
FORSTØRRE
Trinn 4
La oss se følgende, vi kan finne hvor det er to mellomrom og erstatte dem med ett:
sed -n '1.3 s / * / / gp' Solvetic.txtStjernen (*) representerer null eller flere av det tidligere valgte tegnet.
Trinn 5
Du kan redusere søkemønsteret til et enkelt mellomrom med følgende kommando:
sed -n '1.3 s / * / / gp' Solvetic.txtVi ser forskjellen i resultatene:
FORSTØRRE
I sistnevnte tilfelle samsvarer stjernen med null eller flere av det forrige tegnet, dette får hvert ikke-mellomromstegn til å ligne et "nullrom" ved å bruke kommandoen.
Trinn 6
For å gjøre to eller flere substitusjoner samtidig utfører vi:
sed -n -e 's / executed / applied / gip' -e 's / tasks / actions / gip' Solvetic.txt
FORSTØRRE
4. SED -erstatningsalternativer på Linux
Vi kan også bruke sed til å trekke ut filnavn fra systemet, i dette tilfellet må vi huske på at hvert objekt må matche et søkemønster (underuttrykk) som kan nummereres (opptil maksimalt ni elementer).
Trinn 1
Disse tallene kan deretter brukes til å referere til spesifikke underuttrykk.
Overuttrykket må være omsluttet av parenteser [()], og parentesene må gå foran en skråstrek (\) slik at de ikke blir oppdaget som et normalt tegn, for eksempel:
sed 's / \ ([^:] * \). * / \ 1 /' / etc / passwd
FORSTØRRE
Variablene som brukes i denne kommandoen er
- sed 's /: angir sed -kommandoen og starten på erstatningsuttrykket.
- \ (: vedlegg underuttrykket, etter et bakoverstrekk
- [^:] *: er den første supekspressionen av søkeordet som inneholder en gruppe mellom parenteser, tegnet (^) betyr "nei" når det brukes i en gruppe, det vil si et tegn som ikke er et kolon
- \): Den avsluttende parentesen [)] med en skråstrek
- . *: er den andre subekspresjonen i søket som indikerer "et hvilket som helst tegn og et hvilket som helst antall av disse".
- / \ 1: er erstatningsdelen av uttrykket som inneholder et tall 1 foran et bakoverstrekk (\) og indikerer at teksten samsvarer med den første subekspressionen
- / ': avslutt sed -kommandoen
Steg 2
Med den forrige kommandoen har vi søkt etter en tegnstreng som ikke inneholder et kolon, siden hver linje i / etc / passwd -filen starter med brukernavnet som ender på et kolon. Vi kan erstatte denne verdien ved å isolere brukernavnet med følgende kommando:
sed 's / \ ([^:] * \) \ (. * \) / \ 2 /' / etc / passwd
FORSTØRRE
Trinn 3
Vi kan bare vise brukernavnene med følgende kommando:
sed 's /:.*// "/ etc/ passwdEt annet alternativ med sed er å bruke c (cut - cut) parameteren for å erstatte tekst i en fil, for eksempel:
sed ' / Linux / c Linux operativsystem' Solvetic.txt
FORSTØRRE
5. Sett inn linjer og tekst med SED i Linux
Trinn 1
En annen oppgave å bruke med sed er å sette inn nye linjer og tekst i en fil, i dette tilfellet har vi følgende data:
FORSTØRRE
Steg 2
Vi kan sette inn en ny linje som angir under hvilken den skal settes inn:
sed ' / Ub / a -> Innsatt!' Solvetic.txt
FORSTØRRE
Trinn 3
Det er også mulig å bruke kommandoen Sett inn (i) for å sette inn en ny linje over kampen:
sed ' / Wi / i -> Innsatt!' Solvetic.txt
FORSTØRRE
Trinn 4
Vi kan bruke ampersand -tegnet (&) for å legge til ny tekst på en matchende linje i filen, utfører vi:
sed 's /.*/--> Innsatt & /' Solvetic.txt
FORSTØRRE
6. Slik sletter du en linje med SED Linux
I dette tilfellet må vi bruke parameteren d (slette), for å slette for eksempel den andre linjen vi utfører:
sed '2d' Solvetic.txt
FORSTØRRE
Vi kan fjerne et område om nødvendig:
sed '1,4d' Solvetic.txtFor å fjerne linjer utenfor et område, må vi bruke et utropstegn (!) Som følger:
sed '2,4! d' Solvetic.txt
7. Slik lagrer du endringer med SED i Linux
Trinn 1
For å anvende endringene som er gjort, er det mulig å bruke alternativet på stedet (-i) for at sed skal skrive endringene i den opprinnelige filen, men for større sikkerhet kan vi legge til en tilleggsutvidelse som følger (vi har sikkerhetskopiert linjene som inneholder ordet Wi):
sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txtVi lister innholdet:
katt Solvetic.txt.bak
FORSTØRRE
Steg 2
Det er mulig å omdirigere utdataene til en ny fil med de samme resultatene:
sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt> Solvetic1.txt
FORSTØRRE
Med sed kan vi jobbe med filene på en fullstendig måte i Linux siden vi har sett alle bruksalternativene.