En av de nyttige og kraftige kommandoene til Linux er kommandoen “sed”. Denne kommandoen brukes til å utføre forskjellige typer oppgaver i Linux, for eksempel å sette inn, oppdatere og slette en bestemt tekst eller linje basert på samsvar. Du kan sette inn en tekst i en streng eller en fil på forskjellige måter ved å bruke kommandoen “sed”.
Hvordan du setter inn en linje etter å ha funnet et treff i en streng eller en linje, vises i denne veiledningen.
Sett inn en linje i strengen
En ny linje kan settes inn etter en hvilken som helst strengverdi ved hjelp av "sed" -kommandoen hvis mønsteret som er definert i kommandoen samsvarer med noen del av strengverdien.
Følgende eksempel viser hvordan en ny linje kan legges til etter en strengverdi hvis en bestemt streng finnes hvor som helst i strengverdien.
Eksempel 1: Sett inn en linje i en streng etter å ha funnet en kamp
Følgende kommando vil søke etter "inng" i strengen, "Jeg liker programmering", og en tekstlinje, "Liker du programmering?”Blir satt inn etter strengen hvis søkestrengen eksisterer.
Her brukes “&” -tegnet for å sette inn linjen etter strengen.
$ echo "Jeg liker programmering."| sed 's / inng / & Liker du programmering?/ 'Følgende utgang viser at "inng" ikke eksisterer i strengen og ingen linje settes inn etter strengen.
Følgende kommando vil søke “ing.”I strengen,“ Jeg liker programmering ”og den finnes i strengen.
Følgende utdata viser at den nye linjen er lagt til etter strengen.
Sett inn en linje i en fil
Det er to måter å sette inn en linje etter at en kamp er funnet i en fil som er nevnt nedenfor. Når “sed” -kommandoen brukes uten “-i-alternativet”, vil innholdet i filen forbli uendret, og utgangen vil vise filinnholdet med den nye linjen som er satt inn. Du må bruke alternativet “-i” med kommandoen “sed” for å sette inn den nye linjen permanent i filen hvis det samsvarende mønsteret finnes i filen.
EN. Bruke “a” i kommandoen “sed”
“A” kan brukes i søkemønsteret til “sed” for å legge til en eller flere linjer i en fil etter linjen der søkemønsteret samsvarer eller etter et bestemt linjenummer.
B. Bruke “i” i “sed” -kommandoen
“I” kan brukes i søkemønsteret til “sed” -kommandoen for å sette inn en eller flere linjer i en fil før linjen der søkemønsteret samsvarer.
Sett inn linje (r) i en fil basert på mønsteret:
Opprett en tabulatoravgrenset tekstfil med navnet Produkter.tekst med følgende innhold for å vise bruken av ovennevnte flagg i “sed” -kommandoen.
Produkter.tekst
ID-navn01 Pisk fløte
02 Kakaopulver
03 Sukker
04 Egg
05 Mel
Eksempel 2: Sett inn en linje etter et bestemt linjenummer ved å bruke “a”
Følgende kommandoer viser hvordan en ny linje kan legges til, etter et bestemt linjenummer på produktene.txt-fil, basert på mønsteret som brukes i kommandoen “sed”.
Her vil den første kommandoen vise det eksisterende innholdet i filen. Kommandoen “sed” vil legge til teksten “b01 Baking powder” etter de to første linjene i filen. Den siste kommandoen brukes til å kontrollere at filinnholdet er endret eller ikke.
$ katteprodukter.tekst$ sed '2 a b01 \ tBaking powder' produkter.tekst
$ katteprodukter.tekst
Følgende utdata vises etter å ha kjørt kommandoen ovenfor.
Eksempel 3: Sett inn en linje etter den siste linjen ved å bruke “a”
Følgende kommando viser hvordan du legger til en ny linje etter den siste linjen i filen. Den første og siste kommandoen viser det eksisterende innholdet i filen før og etter kjøring av "sed" -kommandoen. “$” Symbolet brukes i mønsteret til kommandoen “sed” for å nevne den siste linjen i filen.
$ katteprodukter.tekst$ sed '$ a b01 \ tBaking powder' produkter.tekst
$ katteprodukter.tekst
Følgende utdata vises etter å ha kjørt kommandoen ovenfor.
Eksempel 4: Sett inn en linje hvor som helst i filen etter å ha matchet et mønster ved hjelp av "a"
Følgende “sed” -kommando viser hvordan en ny linje kan legges til hvor som helst i filen basert på det matchende mønsteret. Mønsteret som brukes i "sed" -kommandoen vil søke i en hvilken som helst linje som begynner med "s01", og legge til den nye strengen etter den. Den fjerde linjen i filen starter med “s01”, og den nye linjen blir satt inn etter den linjen.
$ katteprodukter.tekst$ sed '/ ^ s01.* / a b01 \ tBaking Powder 'produkter.tekst
$ katteprodukter.tekst
Følgende utdata vises etter at du har kjørt kommandoen.
Den følgende "sed" -kommandoen vil søke i en linje som slutter med "Powder" og sette inn den nye linjen etter den. Den tredje linjen i filen avsluttes med "Pulver". Så den nye linjen blir satt inn etter den linjen.
$ sed '/ Powder $ / a b01 \ tBaking Powder' produkter.tekst
$ katteprodukter.tekst
Følgende utdata vises når du har kjørt kommandoene ovenfor.
Eksempel 5: Sett inn flere linjer etter det matchende mønsteret ved hjelp av "a"
Følgende “sed” -kommando viser hvordan du kan legge til flere linjer i innholdet i en fil basert på det matchende mønsteret.
Her vil to linjer legges til etter den tredje linjen, i henhold til mønsteret.
$ katteprodukter.tekst$ sed '/ ^ [a-c] / a b01 \ tBaking Powder \ nb02 \ tBaking Soda' produkter.tekst
$ katteprodukter.tekst
Følgende utdata vises når du har kjørt kommandoene ovenfor.
Eksempel 6: Sett inn en linje etter å ha matchet et mønster ved hjelp av "I"
$ katteprodukter.tekst$ sed '/ cream / i b01 \ tBaking Powder' produkter.tekst
$ katteprodukter.tekst
Følgende utdata vises når du har kjørt kommandoene ovenfor.
Eksempel 7: Sett inn en linje permanent etter det matchende mønsteret ved å bruke alternativet “-i”
Følgende “sed” -kommando viser hvordan du endrer innholdet i filen permanent. Alternativet “i” brukes med kommandoen “sed” for å sette inn en ny linje i filen basert på mønsteret.
$ katteprodukter.tekst$ sed -i '/ e $ / a g01 \ tGhee' produkter.tekst
$ katteprodukter.tekst
Følgende utdata vises når du har kjørt kommandoene ovenfor.
Konklusjon:
Måtene å sette inn to eller flere linjer i en fil ved å bruke "sed" -kommandoen med mønster er vist i denne veiledningen for å hjelpe leseren med å bruke denne kommandoen for å sette inn linjer midlertidig eller permanent basert på mønsteret.