En av de användbara och kraftfulla kommandona i Linux är kommandot “sed”. Detta kommando används för att utföra olika typer av uppgifter i Linux, till exempel infoga, uppdatera och ta bort en viss text eller rad baserat på matchningen. Du kan infoga en text i en sträng eller en fil på olika sätt genom att använda kommandot “sed”.
Hur du sätter in en rad efter att ha hittat en matchning i en sträng eller en rad visas i denna handledning.
Infoga en rad i strängen
En ny rad kan infogas efter valfritt strängvärde med kommandot “sed” om mönstret som definierats i kommandot matchar någon del av strängvärdet.
Följande exempel visar hur en ny rad kan läggas till efter ett strängvärde om en viss sträng finns någonstans i strängvärdet.
Exempel 1: Infoga en rad i en sträng efter att ha hittat en matchning
Följande kommando kommer att söka "inng" i strängen, "Jag gillar programmering" och en textrad, "Gillar du programmering?”Infogas efter strängen om söksträngen finns.
Här används “&” -tecknet för att infoga raden efter strängen.
$ echo "Jag gillar programmering."| sed's / inng / & Gillar du programmering?/ 'Följande utdata visar att "inng" inte finns i strängen och ingen rad infogas efter strängen.
Följande kommando söker “ing.”I strängen,“ Jag gillar programmering ”och den finns i strängen.
Följande utdata visar att den nya raden läggs till efter strängen.
Infoga en rad i en fil
Det finns två sätt att infoga en rad efter att en matchning har hittats i en fil som nämns nedan. När kommandot “sed” används utan “-i-alternativet” förblir filens innehåll oförändrat och utdata visar filinnehållet med den infogade nya raden. Du måste använda alternativet “-i” med kommandot “sed” för att infoga den nya raden permanent i filen om matchningsmönstret finns i filen.
A. Använd “a” i kommandot “sed”
“A” kan användas i sökmönstret för “sed” för att lägga till en eller flera rader i en fil efter raden där sökmönstret matchar eller efter ett visst radnummer.
B. Använd “i” i kommandot “sed”
”I” kan användas i sökmönstret för kommandot “sed” för att infoga en eller flera rader i en fil före raden där sökmönstret matchar.
Infoga rader i en fil baserat på mönstret:
Skapa en flikavgränsad textfil med namnet Produkter.Text med följande innehåll för att visa användningen av ovanstående flagga i kommandot “sed”.
Produkter.Text
ID-namn01 Vispa grädde
02 Kakaopulver
03 Socker
04 Ägg
05 Mjöl
Exempel 2: Infoga en rad efter ett visst radnummer med hjälp av “a”
Följande kommandon visar hur en ny rad kan läggas till efter ett visst radnummer på produkterna.txt-fil, baserat på det mönster som används i kommandot “sed”.
Här kommer det första kommandot att visa det befintliga innehållet i filen. Kommandot "sed" lägger till texten "b01 Bakpulver" efter de första två raderna i filen. Det sista kommandot används för att kontrollera att filinnehållet ändras eller inte.
$ kattprodukter.Text$ sed '2 a b01 \ tBakpulver' produkter.Text
$ kattprodukter.Text
Följande utdata visas efter att ha kört ovanstående kommando.
Exempel 3: Infoga en rad efter den sista raden med "a"
Följande kommando visar hur du lägger till en ny rad efter den sista raden i filen. Det första och sista kommandot visar det befintliga innehållet i filen före och efter körningen av “sed” -kommandot. Symbolen “$” används i mönstret för kommandot “sed” för att nämna den sista raden i filen.
$ kattprodukter.Text$ sed '$ a b01 \ tBakpulver' produkter.Text
$ kattprodukter.Text
Följande utdata visas efter att ha kört ovanstående kommando.
Exempel 4: Infoga en rad var som helst i filen efter att ha matchat ett mönster med "a"
Följande “sed” -kommando visar hur en ny rad kan läggas till var som helst i filen baserat på matchande mönster. Mönstret som används i kommandot “sed” kommer att söka i vilken rad som helst som börjar med “s01” och lägga till den nya strängen efter den. Den fjärde raden i filen börjar med “s01” och den nya raden infogas efter den raden.
$ kattprodukter.Text$ sed '/ ^ s01.* / a b01 \ tBaking Powder 'produkter.Text
$ kattprodukter.Text
Följande utdata visas när kommandot har körts.
Följande "sed" -kommando söker efter en rad som slutar med "Powder" och infogar den nya raden efter den. Den tredje raden i filen slutar med "Pulver". Så den nya raden kommer att infogas efter den raden.
$ sed '/ Powder $ / a b01 \ tBaking Powder' produkter.Text
$ kattprodukter.Text
Följande utdata visas efter att ovanstående kommandon har körts.
Exempel 5: Infoga flera rader efter det matchande mönstret med "a"
Följande "sed" -kommando visar hur man lägger till flera rader i innehållet i en fil baserat på det matchande mönstret.
Här kommer två rader att läggas till efter den tredje raden, enligt mönstret.
$ kattprodukter.Text$ sed '/ ^ [a-c] / a b01 \ tBaking Powder \ nb02 \ tBaking Soda' produkter.Text
$ kattprodukter.Text
Följande utdata visas efter att ovanstående kommandon har körts.
Exempel 6: Infoga en rad efter att ha matchat ett mönster med "I"
$ kattprodukter.Text$ sed '/ cream / i b01 \ tBaking Powder' produkter.Text
$ kattprodukter.Text
Följande utdata visas efter att ovanstående kommandon har körts.
Exempel 7: Infoga en rad permanent efter matchningsmönstret med alternativet “-i”
Följande “sed” -kommando visar hur du ändrar innehållet i filen permanent. Alternativet “i” används med kommandot “sed” för att infoga en ny rad i filen baserat på mönstret.
$ kattprodukter.Text$ sed -i '/ e $ / a g01 \ tGhee' produkter.Text
$ kattprodukter.Text
Följande utdata visas efter att ovanstående kommandon har körts.
Slutsats:
Sätten att infoga två eller flera rader i en fil med kommandot "sed" med mönster har visats i denna handledning för att hjälpa läsaren att tillämpa detta kommando för att infoga rader tillfälligt eller permanent baserat på mönstret.