Hvordan sette inn en linje etter kampen ved hjelp av `sed`?

How Insert Line After Match Using Sed



En av de nyttige og kraftige kommandoene til Linux er sed -kommandoen. Denne kommandoen brukes til å utføre forskjellige typer oppgaver i Linux, for eksempel å sette inn, oppdatere og slette en bestemt tekst eller linje basert på kampen. Du kan sette inn en tekst i en streng eller en fil på forskjellige måter ved å bruke sed -kommandoen.

Hvordan du setter inn en linje etter å ha funnet en treff i en streng eller en linje, er vist i denne opplæringen.







Sett inn en linje i strengen

En ny linje kan settes inn etter hvilken som helst strengverdi ved hjelp av sed -kommandoen hvis mønsteret som er definert i kommandoen, samsvarer med noen del av strengverdien.



Følgende eksempel viser hvordan en ny linje kan legges til etter en strengverdi hvis en bestemt streng finnes hvor som helst i strengverdien.



Eksempel-1: Sett inn en linje i en streng etter å ha funnet en treff

Følgende kommando vil søke inng i strengen, jeg liker programmering og en tekstlinje, Liker du programmering? vil bli satt inn etter strengen hvis søkestrengen eksisterer.





Her brukes & -tegnet for å sette inn linjen etter strengen.

$kastet ut 'Jeg liker å programmere.' | sed 's/inng/& Do you like programming?/'

Følgende utgang viser at inng ikke eksisterer i strengen og at det ikke settes inn noen linje etter strengen.




Følgende kommando søker etter. i strengen liker jeg å programmere, og det finnes i strengen.

$kastet ut 'Jeg liker å programmere.' | sed 's/ing ./& Liker du programmering?/'

Følgende utdata viser at den nye linjen legges til etter strengen.

Sett inn en linje i en fil

Det er to måter å sette inn en linje etter at en treff er funnet i en fil som er nevnt nedenfor. Når sed -kommandoen brukes uten -i -alternativet, vil innholdet i filen forbli uendret, og utgangen vil vise filinnholdet med den nye linjen. Du må bruke -i -alternativet med sed -kommandoen for å sette inn den nye linjen permanent i filen hvis det matchende mønsteret finnes i filen.

A. Bruke a i sed -kommandoen

A -en kan brukes i søkemønsteret til sed for å legge til en eller flere linjer i en fil etter linjen der søkemønsteret samsvarer eller etter et bestemt linjenummer.

B. Bruke i i sed -kommandoen

I kan brukes i søkemønsteret til sed -kommandoen for å sette inn en eller flere linjer i en fil før linjen der søkemønsteret samsvarer.

Sett inn linje (r) i en fil basert på mønsteret:

Lag en tabulatoravgrenset tekstfil med navnet products.txt med følgende innhold for å vise bruken av flagget ovenfor i sed -kommandoen.

products.txt

ID -navn

01 Pisk kremfløte

02 Kakaopulver

03 Sukker

04 Egg

05 Mel

Eksempel-2: Sett inn en linje etter et bestemt linjenummer ved å bruke a

Følgende kommandoer viser hvordan en ny linje kan legges til, etter et bestemt linjenummer i products.txt -filen, basert på mønsteret som brukes i sed -kommandoen.

Her vil den første kommandoen vise det eksisterende innholdet i filen. Sed -kommandoen vil legge til teksten, b01 Bakepulver, etter de to første linjene i filen. Den siste kommandoen brukes til å kontrollere at filinnholdet er endret eller ikke.

$kattproducts.txt

$sed '2 a b01 tBakepulver'products.txt

$kattproducts.txt

Følgende utdata vises etter at du har kjørt kommandoen ovenfor.

Eksempel-3: Sett inn en linje etter den siste linjen ved å bruke a

Følgende kommando viser hvordan du legger til en ny linje etter den siste linjen i filen. Den første og siste kommandoen viser det eksisterende innholdet i filen før og etter kjøring av sed -kommandoen. $ -Symbolet brukes i mønsteret til sed -kommandoen for å nevne den siste linjen i filen.

$kattproducts.txt

$sed '$ a b01 tBakepulver'products.txt

$kattproducts.txt

Følgende utdata vises etter at du har kjørt kommandoen ovenfor.

Eksempel-4: Sett inn en linje hvor som helst i filen etter å ha matchet et mønster ved hjelp av a

Følgende sed -kommando viser hvordan en ny linje kan legges til hvor som helst i filen basert på det matchende mønsteret. Mønsteret som brukes i sed -kommandoen, søker i alle linjer som starter med s01, og legger til den nye strengen etter den. Den fjerde linjen i filen starter med s01, og den nye linjen settes inn etter den linjen.

$kattproducts.txt

$sed '/^s01.*/a b01 tBakepulver'products.txt

$kattproducts.txt

Følgende utdata vises etter at du har kjørt kommandoen.


Følgende sed -kommando søker etter en linje som slutter med pulver og setter inn den nye linjen etter den. Den tredje linjen i filen ender med Powder. Så den nye linjen vil bli satt inn etter den linjen.

$kattproducts.txt

$sed '/Pulver $/a b01 tBakpulver'products.txt

$kattproducts.txt

Følgende utdata vises etter at du har kjørt kommandoene ovenfor.

Eksempel-5: Sett inn flere linjer etter det matchende mønsteret med a

Følgende sed -kommando viser hvordan du kan legge til flere linjer i innholdet i en fil basert på det matchende mønsteret.

Her vil to linjer bli lagt til etter den tredje linjen, i henhold til mønsteret.

$kattproducts.txt

$sed '/^[a-c]/a b01 tBakpulver nb02 tBakepulver'products.txt

$kattproducts.txt

Følgende utdata vises etter at du har kjørt kommandoene ovenfor.

Eksempel-6: Sett inn en linje etter å ha matchet et mønster ved hjelp av I

$kattproducts.txt

$sed '/krem/i b01 tBakpulver'products.txt

$kattproducts.txt

Følgende utdata vises etter at du har kjørt kommandoene ovenfor.

Eksempel -7: Sett inn en linje permanent etter matchende mønster ved hjelp av -i -alternativet

Følgende sed -kommando viser hvordan du endrer innholdet i filen permanent. Alternativet i brukes med kommandoen sed for å sette inn en ny linje i filen basert på mønsteret.

$kattproducts.txt

$sed -Jeg '/e $/a g01 tGhee'products.txt

$kattproducts.txt

Følgende utdata vises etter at du har kjørt kommandoene ovenfor.

Konklusjon:

Måtene du kan sette inn to eller flere linjer i en fil ved å bruke sed -kommandoen med mønster, har blitt vist i denne opplæringen for å hjelpe leseren med å bruke denne kommandoen for å sette inn linjer i midlertidig eller permanent basert på mønsteret.