Sådan indsættes en linje efter kampen ved hjælp af 'sed'?

How Insert Line After Match Using Sed



En af de nyttige og kraftfulde kommandoer i Linux er sed -kommandoen. Denne kommando bruges til at udføre forskellige typer opgaver i Linux, såsom indsæt, opdater og slet en bestemt tekst eller linje baseret på matchningen. Du kan indsætte en tekst i en streng eller en fil på forskellige måder ved hjælp af sed -kommandoen.

Sådan indsættes en linje efter at have fundet et match i en streng eller en linje, er vist i denne vejledning.







Indsæt en linje i strengen

En ny linje kan indsættes efter en strengværdi ved hjælp af sed -kommandoen, hvis det mønster, der er defineret i kommandoen, matcher med en hvilken som helst del af strengværdien.



Følgende eksempel viser, hvordan en ny linje kan tilføjes efter en strengværdi, hvis der findes en bestemt streng hvor som helst i strengværdien.



Eksempel-1: Indsæt en linje i en streng efter at have fundet et match

Følgende kommando søger ind i strengen, jeg kan lide programmering og en tekstlinje, Kan du lide at programmere? indsættes efter strengen, hvis søgestrengen findes.





Her bruges & -tegnet til at indsætte linjen efter strengen.

$smed ud 'Jeg kan godt lide at programmere.' | sed 's / inng / & Kan du lide at programmere? /'

Følgende output viser, at inng ikke findes i strengen, og at der ikke indsættes en linje efter strengen.




Følgende kommando søger efter. i strengen kan jeg lide at programmere, og det findes i strengen.

$smed ud 'Jeg kan godt lide at programmere.' | sed 's/ing ./& Kan du lide at programmere?/'

Den følgende output viser, at den nye linje tilføjes efter strengen.

Indsæt en linje i en fil

Der er to måder at indsætte en linje på, efter at et match er fundet i en fil, der er nævnt nedenfor. Når sed -kommandoen bruges uden -i -indstillingen, forbliver filens indhold uændret, og output viser filindholdet med den indsatte nye linje. Du skal bruge indstillingen -i med sed -kommandoen for at indsætte den nye linje permanent i filen, hvis det matchende mønster findes i filen.

A. Brug af a i sed -kommandoen

Den a kan bruges i søgemønsteret for sed til at tilføje en eller flere linjer i en fil efter den linje, hvor søgemønsteret matcher eller efter et bestemt linjenummer.

B. Brug af i i sed -kommandoen

I kan bruges i søgemønsteret for sed -kommandoen til at indsætte en eller flere linjer i en fil før den linje, hvor søgemønsteret matcher.

Indsæt linje (r) i en fil baseret på mønsteret:

Opret en fanebladet tekstfil med navnet products.txt med følgende indhold til at vise anvendelserne af ovenstående flag i sed -kommandoen.

products.txt

ID -navn

01 Pisk fløde

02 Kakaopulver

03 Sukker

04 Æg

05 Mel

Eksempel-2: Indsæt en linje efter et bestemt linjenummer ved hjælp af a

Følgende kommandoer viser, hvordan en ny linje kan tilføjes efter et bestemt linjenummer i filen products.txt baseret på det mønster, der bruges i sed -kommandoen.

Her viser den første kommando det eksisterende indhold i filen. Sed -kommandoen tilføjer teksten, b01 Bagepulver, efter de to første linjer i filen. Den sidste kommando bruges til at kontrollere, at filindholdet er ændret eller ej.

$katproducts.txt

$sed '2 a b01 tBagepulver'products.txt

$katproducts.txt

Følgende output vises efter at have kørt ovenstående kommando.

Eksempel-3: Indsæt en linje efter den sidste linje ved hjælp af a

Følgende kommando viser, hvordan man tilføjer en ny linje efter den sidste linje i filen. Den første og sidste kommando viser det eksisterende indhold i filen før og efter udførelsen af ​​sed -kommandoen. $ -Symbolet bruges i mønsteret af sed -kommandoen til at nævne den sidste linje i filen.

$katproducts.txt

$sed '$ a b01 tBagepulver'products.txt

$katproducts.txt

Følgende output vises efter at have kørt ovenstående kommando.

Eksempel-4: Indsæt en linje hvor som helst i filen efter at have matchet et mønster ved hjælp af a

Følgende sed -kommando viser, hvordan en ny linje kan tilføjes overalt i filen baseret på det matchende mønster. Mønsteret, der bruges i sed -kommandoen, søger efter enhver linje, der starter med s01, og tilføjer den nye streng efter den. Filens fjerde linje starter med s01, og den nye linje indsættes efter den linje.

$katproducts.txt

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

$katproducts.txt

Følgende output vises efter at have kørt kommandoen.


Den følgende sed -kommando søger efter enhver linje, der ender med pulver, og indsætter den nye linje efter den. Den tredje linje i filen slutter med Pulver. Så den nye linje indsættes efter den linje.

$katproducts.txt

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

$katproducts.txt

Følgende output vises efter kørsel af ovenstående kommandoer.

Eksempel-5: Indsæt flere linjer efter det matchende mønster ved hjælp af a

Den følgende sed -kommando viser, hvordan man tilføjer flere linjer inde i en fils indhold baseret på det matchende mønster.

Her tilføjes to linjer efter den tredje linje i henhold til mønsteret.

$katproducts.txt

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

$katproducts.txt

Følgende output vises efter kørsel af ovenstående kommandoer.

Eksempel-6: Indsæt en linje efter at have matchet et mønster ved hjælp af I

$katproducts.txt

$sed '/creme/i b01 tBagepulver'products.txt

$katproducts.txt

Følgende output vises efter kørsel af ovenstående kommandoer.

Eksempel -7: Indsæt en linje permanent efter det matchende mønster ved hjælp af -i -indstillingen

Følgende sed -kommando viser, hvordan du ændrer filens indhold permanent. Indstillingen i bruges med sed -kommandoen til at indsætte en ny linje i filen baseret på mønsteret.

$katproducts.txt

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

$katproducts.txt

Følgende output vises efter kørsel af ovenstående kommandoer.

Konklusion:

Måden at indsætte to eller flere linjer i en fil ved hjælp af sed -kommandoen med mønster er blevet vist i denne vejledning for at hjælpe læseren med at anvende denne kommando til at indsætte linjer i midlertidigt eller permanent baseret på mønsteret.