“Begrepet sed er en forkortelse av Stream Editor. I Unix/Linux, sed Kommandoer og transformerer strømmer (tekster, i de fleste tilfeller). Det er et kommandolinjeverktøy som kommer forhåndsinstallert i hvert UNIX/Linux-system.”
I denne guiden vil vi utforske G alternativet i sed.
Grunnleggende bruk av SED
Den vanligste bruken av SED -kommandoen er å finne og erstatte innhold i en gitt strøm. Kommandostrukturen er som følger:
$ sed 's ///'
Ta en titt på følgende eksempel:
$ ECHO "The Quick Brown Fox" | sed 's/the/the/'
Her,
Hvis du prøver å redigere en tekstfil, vil SED ikke endre filinnholdet som standard. Dette for å unngå utilsiktet tap av data. For å endre innholdet i en fil direkte, må du kjøre SED med redigering på stedet.
G -alternativet i SED
Når du finner og erstatter, er standardoppførselen til sed er å avslutte sine handlinger etter å ha funnet den første forekomsten. Følgende eksempel demonstrerer denne oppførselen perfekt:
$ ekko "The the the" | sed 's/the/the/'
Her,
For å instruere SED om å transformere alle de samsvarende forekomstene av det gitte mønsteret, må vi legge til G -alternativet. Oppdater kommandoen som følger:
$ ekko "The the the" | sed 's/the/the/g'
Nå endres alle forekomstene av "The" til "den" riktig.
G -alternativet i SED
Vi kommer endelig til fokuspunktet for denne guiden. Mens g alternativet er aktuelt for tekstsubstitusjon, G Alternativet brukes til et helt annet formål.
Bruker G Alternativ, vi kan legge plass til mønsterområdet. Enkelt sagt kan vi legge til nye linjer før/etter matchende mønster.
For demonstrasjon har jeg opprettet en eksempler på tekstfil test.tekst:
katt << EOF > test.tekst
de
rask
brun
de
rev
Eof
Ytterligere avstand
Vi kan nå utføre forskjellige operasjoner på avstanden til filen. For eksempel, for å dobbelt plass filen, bruk følgende kommando:
$ sed g test.tekst
Tilsvarende kan vi tredoble plassen filen:
$ sed 'g; g' test.tekst
Her,
Fjerne ekstra avstand
Vi kan også bruke G Alternativ for å slette alle blanke linjer og dobbel plass:
$ sed 'g; g' test.txt | sed '/^$/d; g'
Sette inn blanke linjer før/etter kampene
Vi kan spesifisere et mønster ved hjelp av vanlig uttrykk og fortelle SED for å legge til en tom linje før/etter det.
Det første eksemplet vil være å legge til en blank linje under matchende mønster:
$ sed '/the/g' -testen.tekst
Det neste eksemplet vil være å legge til en tom linje over matchende mønster:
$ sed '/the/x; p; x;' test.tekst
Til slutt kan vi kombinere dem begge sammen for å sette inn blanke linjer rundt det matchende mønsteret:
$ sed '/the/x; p; x; g;' test.tekst
Siste tanker
I denne guiden demonstrerte vi med suksess forskjellige måter å bruke G alternativ med sed For å legge til mellomrom i teksten. Denne teknikken kan være nyttig i forskjellige situasjoner, for eksempel å utpeke spesifikke linjer i en feilsøkingslogg.
En stor fordel med SED er dens vanlige uttrykksstøtte. Lær mer om SED med regex. SED -kommandoen kan også enkelt integreres i skallskripting.
Glad databehandling!