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.
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 -navn01 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.
$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.