Kako zamenjati več vrstic z ukazom `sed`

How Replace Multiple Lines Using Sed Command



Včasih je treba več vrstic datoteke zamenjati s katerim koli znakom ali besedilom. V Linuxu obstajajo različni ukazi za zamenjavo več vrstic datoteke. Ukaz `sed` je eden izmed njih za tovrstne naloge. Celotna oblika `sed` je Steam Editor in se večinoma uporablja za branje in pretvorbo besedila na različne načine z uporabo regularnega izraza. Kako se ta ukaz lahko uporabi za zamenjavo več vrstic datoteke na različne načine, je razloženo v tej vadnici.

Pogosto uporabljeni 'sed' Cheat Sheet:

Najpogosteje uporabljeni znaki, uporabljeni v ukazu `sed`, so razloženi v naslednji tabeli.







Znak Namen
do Uporablja se za dodajanje vsebine.
b Uporablja se za razvejanje vsebine.
c Uporablja se za spreminjanje vsebine.
d Uporablja se za brisanje vrstice datoteke.
D Uporablja se za brisanje prve vrstice datoteke.
g Uporabljalo se je za kopiranje iz besedila.
G Uporablja se za dodajanje iz besedila.
h Uporablja se za kopiranje v besedilo.
H Uporablja se za dodajanje zadrževalnega besedila.
jaz Uporablja se za vstavljanje.
jaz Uporablja se za tiskanje nadomestne vrstice.
n Uporablja se za prehod na naslednjo vrstico.
N Uporablja se za dodajanje naslednje vrstice vnosa.
str Uporablja se za tiskanje.
P Uporablja se za tiskanje prve vrstice.
kaj Uporablja se za opustitev.
Vprašanje Uporablja se za takojšnjo opustitev.
r Uporablja se za branje datoteke.
R Uporablja se za branje vrstice iz datoteke.
s Uporablja se za zamenjavo.
t Uporablja se za testiranje zamenjave.
T Uporablja se za testiranje brez zamenjave.
v Uporablja se za pisanje v datoteko.
IN Uporablja se za zapis vrstice v datoteko.
x Uporablja se za zamenjavo vzorcev in držanje.
in Uporablja se za prevajanje.
Z Uporablja se za čiščenje črte.
'=' Uporablja se za tiskanje številke vrstice.

Zamenjajte več vrstic z ukazom `sed` iz terminala:

V tem delu te vadnice je prikazano, kako lahko z ukazom `sed` zamenjate več vrstic iz datoteke iz terminala. Ustvarite datoteko z imenom sed.txt z naslednjo vsebino preizkusite ukaze tega dela.



sed.txt



Polna oblika sed je urejevalnik tokov.





To je pripomoček Unix, ki se uporablja za branje in pretvorbo besedila v drugačni obliki.

Razvil ga je Lee E. McMahon.



Uporablja se za obdelavo besedila.

Podpira regularne izraze.

Primer-1: Zamenjajte dve zaporedni vrstici

Naslednji ukaz `sed` bo nadomestil dve zaporedni vrstici z drugo. Tu se možnost -z uporablja za zamenjavo zaporednih vrstic z ničelnimi podatki, preden se doda nadomestno besedilo. Po ukazu je 3rdin 4thvrstice datoteke bodo nadomeščene z besedilom, 'To je zelo uporabno orodje' .

$mačkased.txt
$sed -Z 's/Razvil ga je Lee E. McMahon. n Uporablja se za besedilo
obdelava./To je zelo uporabno orodje./'
sed.txt

Po zagonu ukazov se prikaže naslednji izhod.

Primer 2: Zamenjajte več vrstic glede na ujemanje in globalno zastavo

Naslednji ukaz `sed` bo nadomestil vse vrstice, ki se začnejo z besedo, 'To' z besedo, ' Ta vrstica se nadomesti ‘.

$mačkased.txt
$sed 's/^It.*/Ta vrstica je zamenjana/g'sed.txt

Po zagonu ukazov se prikaže naslednji izhod. Tri vrstice vsebujejo besedo ' To ‘V datoteki. Torej so bile te vrstice zamenjane z nadomestnim besedilom.

Primer 3: Zamenjajte več vrstic na podlagi ukaza ujemanja in naslednje vrstice

Naslednji ukaz `sed` bo nadomestil besedo, ' je 'Z besedo,' je bil 'Z ukazom v naslednji vrstici,' n '.

$mačkased.txt
$sed '{n;/is/{s/is/was/}}'sed.txt

Po zagonu ukazov se prikaže naslednji izhod. Tukaj, 'Je' obstaja v 2ndin 4thvrstice datoteke, te vrstice pa se spremenijo z besedo 'Bil' .

Zamenjajte več vrstic z ustvarjanjem datoteke skripta `sed`:

V prejšnjih primerih so bili iz terminala izvedeni ukazi `sed`. Ampak to je skriptni jezik, in če skript vsebuje več stavkov, je bolje ustvariti datoteko sed s skriptom. Ustvarite besedilno datoteko z imenom students.txt z naslednjo vsebino, v kateri bo uporabljen skript `sed`.

students.txt

ID: 111045
Ime: Robert
Oddelek: CSE
Serija: 35

ID: 111876
Ime: Joseph
Oddelek: BBA
Serija: 27

ID: 111346
Ime: William
Oddelek: CSE
Serija: 45

ID: 111654
Ime: Charles
Oddelek: EEE
Serija: 41

ID: 111346
Ime: John
Oddelek: CSE
Serija: 25

ID: 111746
Ime: Thomas
Oddelek: CSE
Serija: 15

Primer 4: Zamenjajte več vrstic datoteke z datoteko skripta `sed`

Ustvarite datoteko sed z imenom replace.sed z naslednjo vsebino za zamenjavo več vrstic na podlagi vzorca iskanja. Tukaj beseda ' CSE 'Bo iskan v besedilni datoteki, in če ujemanje obstaja, bo znova poiskalo številki 35 in 15. Če v datoteki obstaja drugo ujemanje, bo nadomeščeno s številko 45.

replace.sed

/CSE/ {
p; n;
/35/ {
s/35/Štiri, pet/;
p; d;
}
/petnajst/ {
s/petnajst/55/;
p; d;
}
}
p;

Zaženite naslednji ukaz, da preverite obstoječo vsebino datoteke. 'CSE' se je v besedilni datoteki pojavil štirikrat. 35 in 15 obstajata na dveh mestih.

$mačkastudents.txt

Naslednji ukaz bo nadomestil vsebino več vrstic na podlagi skripta sed.

$sed -n -freplace.sed students.txt

Po zagonu ukaza se prikaže naslednji izhod.

Zaključek

V tej vadnici so bili prikazani različni načini zamenjave več vrstic ali vsebine več vrstic z ukazom `sed`. V tem vodiču je prikazano tudi, kako se skript `sed` lahko izvede iz datoteke sed. Upam, da bo ta vadnica bralcu pomagala zamenjati več vrstic katere koli datoteke z ukazom `sed`.