Hva er G -alternativet i SED

Hva er G -alternativet i SED

“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,

    • De ekko Kommando skriver ut den gitte strengen på Stdout. I bash, Stdout, stdin og stderr er innebygde datastrømmer.
    • De sed Kommando bruker Stdout som strømmen, fungerer som spesifisert, og skriver ut utgangen på konsollen.

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,

    • Bruker ekko Kommando, vi sender det samme ordet "de" flere ganger til sed kommando.
    • Imidlertid, i utgangen, er det bare den første forekomsten av "The" omdannet til "The".

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,

    • I begge tilfeller, fordi vi ikke gir noe mønster å matche for, sed samsvarer med alle tekstene i filen.
    • De sed Kommando fungerer linje-for-linje på en gitt tekststrøm. Etter å ha samsvarende hver linje (fordi det ikke ble gitt noe spesifikt mønster), legges en ny linje.

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!