En af de nyttige og kraftfulde kommandoer i Linux er kommandoen “sed”. Denne kommando bruges til at udføre forskellige typer opgaver i Linux, såsom indsætte, opdatere og slette en bestemt tekst eller linje baseret på matchet. Du kan indsætte en tekst i en streng eller en fil på forskellige måder ved hjælp af kommandoen “sed”.
Sådan indsættes en linje efter at have fundet et match i en streng eller en linje vises i denne vejledning.
Indsæt en linje i strengen
En ny linje kan indsættes efter en hvilken som helst strengværdi ved hjælp af kommandoen “sed”, hvis det mønster, der er defineret i kommandoen, matcher en hvilken som helst del af strengværdien.
Følgende eksempel viser, hvordan en ny linje kan tilføjes efter en strengværdi, hvis en bestemt streng findes et vilkårligt sted i strengværdien.
Eksempel 1: Indsæt en linje i en streng efter at have fundet et match
Den følgende kommando søger efter "inng" i strengen, "Jeg kan godt 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.
$ echo "Jeg kan godt lide programmering."| sed 's / inng / & Kan du lide programmering?/ 'Følgende output viser, at "inng" ikke findes i strengen, og der indsættes ingen linje efter strengen.
Den følgende kommando søger efter “ing.”I strengen,“ Jeg kan godt lide programmering ”, og den findes i strengen.
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 efter, at et match er fundet i en fil, der er nævnt nedenfor. Når kommandoen “sed” bruges uden indstillingen “-i”, forbliver filens indhold uændret, og output viser filindholdet med den indsatte nye linje. Du skal bruge indstillingen “-i” med kommandoen “sed” til at indsætte den nye linje permanent i filen, hvis der findes et matchende mønster i filen.
EN. Brug af “a” i kommandoen “sed”
“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 kommandoen "sed"
“I” kan bruges i søgemønsteret for kommandoen “sed” 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 tabulatorafgrænset tekstfil med navnet Produkter.txt med følgende indhold for at vise anvendelsen af ovenstående flag i kommandoen “sed”.
Produkter.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 på produkterne.txt-fil, baseret på det mønster, der bruges i kommandoen “sed”.
Her viser den første kommando det eksisterende indhold af filen. Kommandoen “sed” tilføjer teksten “b01 Bagepulver” efter de første to linjer i filen. Den sidste kommando bruges til at kontrollere, om filindholdet er ændret eller ej.
$ kat produkter.txt$ sed '2 a b01 \ tBagepulver' produkter.txt
$ kat produkter.txt
Følgende output vises efter kørsel af 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 af filen før og efter udførelse af kommandoen “sed”. “$” Symbolet bruges i mønsteret af kommandoen “sed” for at nævne den sidste linje i filen.
$ kat produkter.txt$ sed '$ a b01 \ tBagepulver' produkter.txt
$ kat produkter.txt
Følgende output vises efter kørsel af 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"
Den følgende “sed” -kommando viser, hvordan en ny linje kan tilføjes hvor som helst i filen baseret på det matchende mønster. Det mønster, der bruges i kommandoen “sed”, vil søge i en hvilken som helst linje, der starter med “s01” og tilføje den nye streng efter den. Den fjerde linje i filen starter med “s01”, og den nye linje indsættes efter denne linje.
$ kat produkter.txt$ sed '/ ^ s01.* / a b01 \ tBagningspulverprodukter.txt
$ kat produkter.txt
Følgende output vises efter kørsel af kommandoen.
Den følgende "sed" -kommando søger på en linje, der slutter 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 denne linje.
$ sed '/ Powder $ / a b01 \ tBaking Powder' produkter.txt
$ kat produkter.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 indholdet af en fil baseret på det matchende mønster.
Her tilføjes to linjer efter den tredje linje i henhold til mønsteret.
$ kat produkter.txt$ sed '/ ^ [a-c] / a b01 \ tBagningspulver \ nb02 \ tBagtsoda-produkter.txt
$ kat produkter.txt
Følgende output vises efter kørsel af ovenstående kommandoer.
Eksempel 6: Indsæt en linje efter matchning af et mønster ved hjælp af "I"
$ kat produkter.txt$ sed '/ creme / i b01 \ tBagepulverprodukter.txt
$ kat produkter.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" -muligheden
Følgende “sed” -kommando viser, hvordan du ændrer indholdet af filen permanent. Indstillingen “i” bruges med kommandoen “sed” til at indsætte en ny linje i filen baseret på mønsteret.
$ kat produkter.txt$ sed -i '/ e $ / a g01 \ tGhee' produkter.txt
$ kat produkter.txt
Følgende output vises efter kørsel af ovenstående kommandoer.
Konklusion:
Måderne til at indsætte to eller flere linjer i en fil ved hjælp af kommandoen “sed” med mønster er vist i denne vejledning for at hjælpe læseren med at anvende denne kommando til indsættelse af linjer midlertidigt eller permanent baseret på mønsteret.