Ett av de användbara och kraftfulla kommandona i Linux är sed -kommandot. 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 med hjälp av sed -kommandot.
Hur du sätter in en rad efter att ha hittat en matchning i en sträng eller en rad visas i den här självstudien.
Infoga en rad i strängen
En ny rad kan infogas efter valfritt strängvärde med sed -kommandot om mönstret som definieras i kommandot matchar med 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 söker ing 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.
$kastade ut 'Jag gillar att programmera.' | sed 's / inng / & Gillar du programmering? /'Följande utdata visar att ing inte existerar i strängen och att ingen rad infogas efter strängen.
Följande kommando söker efter. i strängen gillar jag att programmera och det 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 hittats i en fil som nämns nedan. När sed -kommandot används utan alternativet -i, förblir innehållet i filen oförändrat och utmatningen visar filinnehållet med den infogade nya raden. Du måste använda alternativet -i med sed -kommandot för att infoga den nya raden permanent i filen om matchningsmönstret finns i filen.
A. Använda a i sed -kommandot
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ända i i kommandot sed
Jag kan användas i sökmönstret för sed -kommandot för att infoga en eller flera rader i en fil före raden där sökmönstret matchar.
Infoga rad (er) i en fil baserat på mönstret:
Skapa en flikavgränsad textfil med namnet products.txt med följande innehåll för att visa användningen av ovanstående flagga i sed -kommandot.
products.txt
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 i filen products.txt, baserat på mönstret som används i sed -kommandot.
Här kommer det första kommandot att visa det befintliga innehållet i filen. Sed -kommandot lägger till texten, b01 Bakpulver, efter de två första raderna i filen. Det sista kommandot används för att kontrollera att filinnehållet ändras eller inte.
$kattproducts.txt$sed '2 a b01 tBakpulver'products.txt
$kattproducts.txt
Följande utdata visas efter att ovanstående kommando har körts.
Exempel-3: Infoga en rad efter den sista raden med hjälp av 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 sed -kommandot för att nämna den sista raden i filen.
$kattproducts.txt$sed '$ a b01 tBakpulver'products.txt
$kattproducts.txt
Följande utdata visas efter att ovanstående kommando har körts.
Exempel-4: Infoga en rad var som helst i filen efter att ha matchat ett mönster med hjälp av 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 sed -kommandot söker efter vilken rad som helst som börjar med s01 och lägger 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.
$kattproducts.txt$sed '/^s01.*/a b01 tBakpulver'products.txt
$kattproducts.txt
Följande utdata visas efter att kommandot körts.
Följande sed -kommando söker efter en rad som slutar med pulver och sätter in den nya raden efter den. Den tredje raden i filen slutar med Pulver. Så den nya raden infogas efter den raden.
$sed '/Pulver $/a b01 tBakpulver'products.txt
$kattproducts.txt
Följande utdata visas efter att ha kört ovanstående kommandon.
Exempel 5: Infoga flera rader efter matchningsmönstret med hjälp av a
Följande sed -kommando visar sättet att lägga till flera rader i innehållet i en fil baserat på matchande mönster.
Här kommer två rader att läggas till efter den tredje raden, enligt mönstret.
$kattproducts.txt$sed '/^[a-c]/a b01 t Bakpulver nb02 t Bakpulver'products.txt
$kattproducts.txt
Följande utdata visas efter att ha kört ovanstående kommandon.
Exempel 6: Infoga en rad efter att ha matchat ett mönster med I
$kattproducts.txt$sed '/cream/i b01 tBakpulver'products.txt
$kattproducts.txt
Följande utdata visas efter att ha kört ovanstående kommandon.
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 sed -kommandot för att infoga en ny rad i filen baserat på mönstret.
$kattproducts.txt$sed -i '/e $/a g01 tGhee'products.txt
$kattproducts.txt
Följande utdata visas efter att ha kört ovanstående kommandon.
Slutsats:
Sätten att infoga två eller flera rader i en fil med sed -kommandot med mönster har visats i den här självstudien för att hjälpa läsaren att tillämpa detta kommando för att infoga rader i tillfälligt eller permanent baserat på mönstret.