Hvordan erstatte flere linjer med kommandoen `sed`

How Replace Multiple Lines Using Sed Command



Noen ganger krever det å erstatte flere linjer i en fil med et bestemt tegn eller tekst. Det finnes forskjellige kommandoer i Linux for å erstatte flere linjer i en fil. `sed` -kommandoen er en av dem for å utføre denne typen oppgaver. Hele formen for `sed` er Steam Editor, og den brukes hovedsakelig til å lese og konvertere teksten på forskjellige måter ved å bruke et vanlig uttrykk. Hvordan denne kommandoen kan brukes til å erstatte flere linjer i en fil på forskjellige måter, forklares i denne opplæringen.

Vanlig brukt `sed` Cheat Sheet:

De mest brukte tegnene som brukes i kommandoen `sed` forklares i tabellen nedenfor.







Karakter Hensikt
til Den brukes til å legge til innhold.
b Den brukes til forgrening av innhold.
c Den brukes til å endre innhold.
d Den brukes til å slette en fillinje.
D Den brukes til å slette den første linjen i en fil.
g Den pleide å kopiere fra beholdningsteksten.
G Den brukes til å legge til fra holdeteksten.
h Den brukes til å kopiere i oppbevaringsteksten.
H Den brukes til å legge til teksten.
Jeg Den brukes til innsetting.
Jeg Den brukes til å skrive ut erstatningslinjen.
n Den brukes til å gå til neste linje.
N Den brukes til å legge til neste inngangslinje.
s Den brukes til å skrive ut.
P Den brukes til å skrive ut den første linjen.
hva Den brukes til å slutte.
Sp Den brukes til å slutte umiddelbart.
r Den brukes til å lese filen.
R Den brukes til å lese linjen fra filen.
s Det brukes til å erstatte.
t Det brukes til å teste for substitusjon.
T Den brukes til å teste uten substitusjon.
i Den brukes til å skrive til filen.
I Den brukes til å skrive en linje til filen.
x Den brukes til å bytte mønster og holde.
og Den brukes til å oversette.
Med Den brukes til å fjerne linjen.
'=' Den brukes til å skrive ut linjenummeret.

Erstatt flere linjer ved å bruke kommandoen `sed` fra terminalen:

Hvordan kommandoen `sed` kan brukes til å erstatte flere linjer fra en fil fra terminalen, er vist i denne delen av denne opplæringen. Lag en fil med navnet sed.txt med følgende innhold, test kommandoene til denne delen.



sed.txt



Den fulle formen for sed er stream editor.





Det er et Unix -verktøy som brukes til å lese og konvertere teksten i et annet format.

Det ble utviklet av Lee E. McMahon.



Den brukes til tekstbehandling.

Den støtter vanlige uttrykk.

Eksempel 1: Bytt ut to påfølgende linjer

Følgende kommando `sed` vil erstatte to påfølgende linjer med en annen linje. Her brukes alternativet -z til å erstatte de påfølgende linjene med null -data før du legger til erstatningsteksten. I følge kommandoen er 3rdog 4thlinjer i filen vil bli erstattet av teksten, 'Det er et veldig nyttig verktøy' .

$kattsed.txt
$sed -Med 's/Det ble utviklet av Lee E. McMahon. nDet brukes til tekst
behandling./Det er et veldig nyttig verktøy./'
sed.txt

Følgende utdata vises etter at du har kjørt kommandoene.

Eksempel 2: Erstatt flere linjer basert på kamp og globalt flagg

Følgende kommando `sed` erstatter alle linjer som starter med ordet, 'Den' ved ordet, ' Denne linjen er erstattet '.

$kattsed.txt
$sed 's/^It.*/Denne linjen er erstattet/g'sed.txt

Følgende utdata vises etter at du har kjørt kommandoene. Tre linjer inneholder ordet ' Den 'I filen. Så disse linjene har blitt erstattet av erstatningsteksten.

Eksempel 3: Erstatt flere linjer basert på samsvar og kommandoen på neste linje

Følgende kommando `sed` erstatter ordet, er 'Ved ordet,' var 'Med kommandoen på neste linje,' n '.

$kattsed.txt
$sed '{n;/is/{s/is/was/}}'sed.txt

Følgende utdata vises etter at du har kjørt kommandoene. Her, 'er' finnes i 2ndog 4thlinjer i filen, og disse linjene endres av ordet 'var' .

Erstatt flere linjer ved å opprette `sed` -skriptfilen:

I de foregående eksemplene har `sed` kommandoer blitt utført fra terminalen. Men det er et skriptspråk, og hvis skriptet inneholder flere utsagn, er det bedre å lage en sed -fil med skriptet. Lag en tekstfil med navnet students.txt med følgende innhold der `sed` -skriptet skal brukes.

students.txt

ID: 111045
Navn: Robert
Avdeling: CSE
Parti: 35

ID: 111876
Navn: Joseph
Avdeling: BBA
Parti: 27

ID: 111346
Navn: William
Avdeling: CSE
Parti: 45

ID: 111654
Navn: Charles
Avdeling: EEE
Parti: 41

ID: 111346
Navn: John
Avdeling: CSE
Parti: 25

ID: 111746
Navn: Thomas
Avdeling: CSE
Parti: 15

Eksempel-4: Erstatt flere linjer i en fil ved å bruke 'sed' scriptfil

Lag en sed -fil med navnet erstatte.sed med følgende innhold for å erstatte flere linjer basert på søkemønsteret. Her er ordet ' CSE ‘Vil det bli søkt i tekstfilen, og hvis samsvaret eksisterer, vil det igjen søke etter tallet 35 og 15. Hvis det andre treffet eksisterer i filen, blir det erstattet av tallet 45.

erstatte.sed

/CSE/ {
p; n;
/35/ {
s/35/Fire fem/;
p; d;
}
/femten/ {
s/femten/55/;
p; d;
}
}
p;

Kjør følgende kommando for å kontrollere det eksisterende innholdet i filen. ‘CSE’ dukket opp fire ganger i tekstfilen. 35 og 15 finnes to steder.

$kattstudents.txt

Følgende kommando erstatter innholdet i flere linjer basert på sed -skriptet.

$sed -n -ferstatt. brukte studenter.txt

Følgende utdata vises etter at du har kjørt kommandoen.

Konklusjon

Ulike måter å erstatte flere linjer eller innholdet i de flere linjene ved hjelp av `sed` -kommandoen har blitt vist i denne opplæringen. Hvordan `sed` -skriptet kan kjøres fra en sed -fil, vises også i denne opplæringen. Jeg håper denne opplæringen vil hjelpe leseren til å erstatte flere linjer i en fil ved å bruke kommandoen 'sed'.