Sådan udskiftes flere linjer ved hjælp af kommandoen 'sed'

How Replace Multiple Lines Using Sed Command



Nogle gange kræver det at udskifte flere linjer i en fil med et bestemt tegn eller tekst. Der findes forskellige kommandoer i Linux til at erstatte flere linjer i en fil. kommandoen 'sed' er en af ​​dem til at udføre denne type opgave. Den fulde form for `sed` er Steam Editor, og den bruges hovedsageligt til at læse og konvertere teksten på forskellige måder ved hjælp af et regulært udtryk. Hvordan denne kommando kan bruges til at erstatte de flere linjer i en fil på forskellige måder, forklares i denne vejledning.

Almindeligt brugt `sed` snydeblad:

De mest almindeligt anvendte tegn, der bruges i kommandoen `sed`, forklares i følgende tabel.







Karakter Formål
til Det bruges til at tilføje indhold.
b Det bruges til forgrening af indhold.
c Det bruges til at ændre indhold.
d Det bruges til at slette en linje i en fil.
D Det bruges til at slette den første linje i en fil.
g Det plejede at kopiere fra beholdningsteksten.
G Det bruges til at tilføje fra holdteksten.
h Det bruges til at kopiere i beholdningsteksten.
H Det bruges til at tilføje til teksten.
jeg Det bruges til indsættelse.
jeg Det bruges til at udskrive erstatningslinjen.
n Det bruges til at gå til den næste linje.
N Det bruges til at tilføje den næste inputlinje.
s Det bruges til at udskrive.
P Det bruges til at udskrive den første linje.
hvad Det bruges til at stoppe.
Q Det bruges til at stoppe med det samme.
r Det bruges til at læse filen.
R Det bruges til at læse linjen fra filen.
s Det bruges til at erstatte.
t Det bruges til at teste for substitution.
T Det bruges til at teste uden substitution.
i Det bruges til at skrive til filen.
I Det bruges til at skrive en linje til filen.
x Det bruges til at bytte mønstre og holde.
og Det bruges til at oversætte.
Med Det bruges til at rydde linjen.
'=' Det bruges til at udskrive linjenummeret.

Erstat flere linjer ved at bruge kommandoen 'sed' fra terminalen:

Hvordan kommandoen `sed` kan bruges til at erstatte flere linjer fra en fil fra terminalen, er vist i denne del af denne vejledning. Opret en fil med navnet sed.txt med følgende indhold teste kommandoerne i denne del.



sed.txt



Den fulde form for sed er stream editor.





Det er et Unix -værktøj, der bruges til at læse og konvertere teksten i et andet format.

Det blev udviklet af Lee E. McMahon.



Det bruges til tekstbehandling.

Det understøtter regulære udtryk.

Eksempel-1: Udskift to på hinanden følgende linjer

Den følgende kommando `sed` erstatter to på hinanden følgende linjer med en anden linje. Her bruges indstillingen -z til at erstatte de på hinanden følgende linjer med null -data, før erstatningsteksten tilføjes. Ifølge kommandoen er 3rdog 4thfilens linjer erstattes af teksten, 'Det er et meget nyttigt værktøj' .

$katsed.txt
$sed -Med 's/Det blev udviklet af Lee E. McMahon. nDet bruges til tekst
behandling./Det er et meget nyttigt værktøj./ '
sed.txt

Følgende output vises, når kommandoerne er kørt.

Eksempel-2: Udskift flere linjer baseret på match og globalt flag

Følgende kommando `sed` erstatter alle linjer, der starter med ordet, 'Det' ved ordet, ' Denne linje udskiftes '.

$katsed.txt
$sed 's/^It.*/Denne linje erstattes/g'sed.txt

Følgende output vises, når kommandoerne er kørt. Tre linjer indeholder ordet ' Det 'I filen. Så disse linjer er blevet erstattet af erstatningsteksten.

Eksempel-3: Udskift flere linjer baseret på match og kommandoen på næste linje

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

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

Følgende output vises, når kommandoerne er kørt. Her, 'er' findes i 2ndog 4thlinjer i filen, og disse linjer ændres af ordet 'Var' .

Erstat flere linjer ved at oprette 'sed' -scriptfilen:

I de foregående eksempler er 'sed' kommandoer blevet udført fra terminalen. Men det er et scriptsprog, og hvis scriptet indeholder flere udsagn, så er det bedre at oprette en sed -fil med scriptet. Opret en tekstfil med navnet studerende.txt med følgende indhold, hvor `sed' -scriptet vil blive anvendt.

studerende.txt

ID: 111045
Navn: Robert
Afdeling: CSE
Batch: 35

ID: 111876
Navn: Joseph
Afdeling: BBA
Batch: 27

ID: 111346
Navn: William
Afdeling: CSE
Batch: 45

ID: 111654
Navn: Charles
Afdeling: EEE
Batch: 41

ID: 111346
Navn: John
Afdeling: CSE
Batch: 25

ID: 111746
Navn: Thomas
Afdeling: CSE
Batch: 15

Eksempel-4: Udskift flere linjer i en fil ved hjælp af 'sed' scriptfil

Opret en sed -fil med navnet udskift. brugt med følgende indhold til at erstatte de flere linjer baseret på søgemønsteret. Her er ordet ' CSE ‘Vil blive søgt i tekstfilen, og hvis matchningen eksisterer, vil den igen søge efter nummeret 35 og 15. Hvis det andet match findes i filen, vil det blive erstattet af tallet 45.

udskift. brugt

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

Kør følgende kommando for at kontrollere det eksisterende indhold i filen. 'CSE' optrådte fire gange i tekstfilen. 35 og 15 findes to steder.

$katstuderende.txt

Den følgende kommando erstatter indholdet af de flere linjer baseret på sed -scriptet.

$sed -n -ferstat. brugte studerende.txt

Følgende output vises efter at have kørt kommandoen.

Konklusion

Forskellige måder at erstatte flere linjer eller indholdet af de flere linjer ved hjælp af kommandoen 'sed' er blevet vist i denne vejledning. Hvordan 'sed' -scriptet kan eksekveres fra en sed -fil, vises også i denne vejledning. Jeg håber, at denne vejledning hjælper læseren med at erstatte flere linjer i enhver fil ved hjælp af kommandoen 'sed'.