Paano palitan ang maraming linya gamit ang utos na `sed`

How Replace Multiple Lines Using Sed Command



Minsan nangangailangan ito upang palitan ang maraming mga linya ng isang file sa anumang partikular na character o teksto. Iba't ibang mga utos ang umiiral sa Linux upang mapalitan ang maraming mga linya ng isang file. Ang `sed` na utos ay isa sa mga ito upang gawin ang ganitong uri ng gawain. Ang buong anyo ng `sed` ay Steam Editor, at higit sa lahat ito ay ginagamit upang basahin at i-convert ang teksto sa iba't ibang paraan sa pamamagitan ng paggamit ng isang regular na expression. Paano magagamit ang utos na ito upang mapalitan ang maraming linya ng isang file sa iba't ibang paraan ay ipinaliwanag sa tutorial na ito.

Karaniwang ginagamit na 'sed` Cheat Sheet:

Ang pinaka-karaniwang ginagamit na mga character na ginamit sa utos ng `sed` ay ipinaliwanag sa sumusunod na talahanayan.







Tauhan Layunin
sa Ginagamit ito para sa pagdaragdag ng nilalaman.
b Ginagamit ito para sa nilalamang sumasanga.
c Ginagamit ito para sa pagbabago ng nilalaman.
d Ginagamit ito para sa pagtanggal ng isang linya ng isang file.
D Ginagamit ito upang tanggalin ang unang linya ng isang file.
g Dati kumopya ito mula sa hawak na teksto.
G Ginagamit ito upang idagdag mula sa may hawak na teksto.
h Ginagamit ito upang makopya sa hawak na teksto.
H Ginagamit ito upang idagdag sa may hawak na teksto.
ako Ginagamit ito para sa pagpapasok.
Ako Ginagamit ito upang mai-print ang kahalili linya.
n Ginagamit ito upang pumunta sa susunod na linya.
N Ginagamit ito upang idugtong ang susunod na linya ng pag-input.
p Ginagamit ito upang mag-print.
P Ginagamit ito upang mai-print ang unang linya.
Ano Ginagamit ito upang huminto.
Q Ginagamit ito upang tumigil kaagad.
r Ginagamit ito upang basahin ang file.
R Ginagamit ito upang basahin ang linya mula sa file.
s Ginagamit ito upang palitan.
t Ginagamit ito upang subukan ang pagpapalit.
T Ginagamit ito upang subukan nang walang kahalili.
sa Ginagamit ito upang sumulat sa file.
SA Ginagamit ito upang sumulat ng isang linya sa file.
x Ginagamit ito upang ipagpalit ang mga pattern at hawakan.
at Ginagamit ito upang isalin.
Kasama si Ginagamit ito upang malinis ang linya.
‘=’ Ginagamit ito upang mai-print ang numero ng linya.

Palitan ang maraming mga linya sa pamamagitan ng paggamit ng `sed` na utos mula sa terminal:

Paano magagamit ang utos na `sed` upang mapalitan ang maraming mga linya mula sa isang file mula sa terminal ay ipinapakita sa bahaging ito ng tutorial na ito. Lumikha ng isang file na pinangalanan sed.txt sa mga sumusunod na nilalaman subukan ang mga utos ng bahaging ito.



sed.txt



Ang buong anyo ng sed ay stream editor.





Ito ay isang utility na Unix na ginagamit upang basahin at mai-convert ang teksto sa ibang format.

Ito ay binuo ni Lee E. McMahon.



Ginagamit ito para sa pagproseso ng teksto.

Sinusuportahan nito ang regular na mga expression.

Halimbawa-1: Palitan ang Dalawang magkakasunod na Linya

Ang sumusunod na `sed` na utos ay papalitan ang dalawang magkakasunod na linya sa isa pang linya. Dito, ang pagpipilian na -z ay ginagamit upang palitan ang magkakasunod na mga linya ng null data bago idagdag ang kapalit na teksto. Ayon sa utos, ang 3rdat 4ikaang mga linya ng file ay papalitan ng teksto, 'Ito ay isang napaka kapaki-pakinabang na tool' .

$pusased.txt
$sed -Nga 's / Ito ay binuo ni Lee E. McMahon. n Ginagamit ito para sa teksto
pagpoproseso./Ito ay isang napaka-kapaki-pakinabang na tool./ '
sed.txt

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang mga utos.

Halimbawa-2: Palitan ang maraming linya batay sa tugma at pandaigdigang watawat

Ang sumusunod na `sed` na utos ay papalitan ang lahat ng mga linya na nagsisimula sa salitang, 'Ito' sa salita, ‘ Ang linyang ito ay pinalitan ‘.

$pusased.txt
$sed 's / ^ Ito. * / Ang linyang ito ay pinalitan / g'sed.txt

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang mga utos. Tatlong linya ang naglalaman ng salitang ‘ Ito ‘Sa file. Kaya, ang mga linyang ito ay napalitan ng kapalit na teksto.

Halimbawa-3: Palitan ang maraming mga linya batay sa pagtutugma at susunod na linya na utos

Ang sumusunod na `sed` na utos ay papalit sa salita, ' ay 'Sa salita,' ay 'Sa susunod na linya na utos,' n '.

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

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang mga utos. Dito, 'Ay' umiiral sa 2ndat 4ikamga linya ng file, at ang mga linyang ito ay binago ng salita 'Ay' .

Palitan ang maraming linya sa pamamagitan ng paglikha ng `sed` script file:

Sa mga nakaraang halimbawa, ang mga `sed` na utos ay naisakatuparan mula sa terminal. Ngunit ito ay isang wika ng scripting, at kung ang script ay naglalaman ng maraming mga pahayag, mas mahusay na lumikha ng isang sed file kasama ang script. Lumikha ng isang text file na pinangalanan mag-aaral.txt kasama ang sumusunod na nilalaman kung saan ilalapat ang script na `sed`.

mag-aaral.txt

ID: 111045
Pangalan: Robert
Kagawaran: CSE
Batch: 35

ID: 111876
Pangalan: Joseph
Kagawaran: BBA
Batch: 27

ID: 111346
Pangalan: William
Kagawaran: CSE
Batch: 45

ID: 111654
Pangalan: Charles
Kagawaran: EEE
Batch: 41

ID: 111346
Pangalan: John
Kagawaran: CSE
Batch: 25

ID: 111746
Pangalan: Thomas
Kagawaran: CSE
Batch: 15

Halimbawa-4: Palitan ang maraming mga linya ng isang file gamit ang `sed` script file

Lumikha ng isang sed file na pinangalanan kay palitan.sed kasama ang sumusunod na nilalaman upang mapalitan ang maraming mga linya batay sa pattern ng paghahanap. Dito, ang salitang ' CSE ‘Hahanapin sa text file, at kung mayroon ang tugma, muli itong hahanapin ang bilang 35 at 15. Kung ang pangalawang tugma ay mayroon sa file, pagkatapos ay papalitan ito ng bilang 45.

palitan.sed

/CSE/ {
p; n;
/35/ {
s/35/Apat lima/;
p; d;
}
/labinlimang/ {
s/labinlimang/55/;
p; d;
}
}
p;

Patakbuhin ang sumusunod na utos upang suriin ang mayroon nang nilalaman ng file. Ang 'CSE' ay lumitaw ng apat na beses sa text file. Ang 35 at 15 ay umiiral sa dalawang lugar.

$pusamag-aaral.txt

Papalitan ng sumusunod na utos ang nilalaman ng maraming linya batay sa sed script.

$sed -n -fpalitan.sed mag-aaral.txt

Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos.

Konklusyon

Ang iba't ibang mga paraan upang mapalitan ang maraming mga linya o ang nilalaman ng maraming mga linya gamit ang utos na `sed` ay ipinakita sa tutorial na ito. Paano maaaring maipatupad ang `sed` script mula sa isang sed file na ipinapakita din sa tutorial na ito. Inaasahan kong makakatulong ang tutorial na ito sa mambabasa na palitan ang maraming mga linya ng anumang file sa pamamagitan ng paggamit ng `sed` na utos.