sed

Hur man sätter in en rad efter matchen med 'sed'?

Hur man sätter in en rad efter matchen med 'sed'?

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.

$ echo "Jag gillar programmering."| sed's / ing./ & Gillar du programmering?/ '

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-namn
01 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.

$ kattprodukter.Text
$ 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.

Bästa spel att spela med handspårning
Oculus Quest introducerade nyligen den fantastiska idén om handspårning utan kontroller. Med ett ständigt ökande antal spel och aktiviteter som utför ...
Hur man visar OSD-överlägg i helskärms Linux-appar och -spel
Att spela helskärmsspel eller använda appar i distraktionsfritt helskärmsläge kan avskärma dig från relevant systeminformation som syns i en panel ell...
Topp 5 spelinspelningskort
Vi har alla sett och älskat streaming av spel på YouTube. PewDiePie, Jakesepticye och Markiplier är bara några av de bästa spelarna som har tjänat mil...