sed

Hur man byter ut flera rader med kommandot 'sed'

Hur man byter ut flera rader med kommandot 'sed'
Ibland krävs det att flera rader i en fil ersätts med ett visst tecken eller text. Olika kommandon finns i Linux för att ersätta flera rader i en fil. 'sed' -kommando är en av dem för att utföra denna typ av uppgift. Den fullständiga formen av 'sed' är Steam Editor, och den används huvudsakligen för att läsa och konvertera texten på olika sätt med ett reguljärt uttryck. Hur detta kommando kan användas för att ersätta flera rader i en fil på olika sätt förklaras i denna handledning.

Vanligt förekommande 'sed' fuskark:

De vanligaste tecknen som används i kommandot 'sed' förklaras i följande tabell.

Karaktär Syfte
a Den används för att lägga till innehåll.
b Den används för förgrening av innehåll.
c Den används för att ändra innehåll.
d Den används för att radera en rad i en fil.
D Den används för att radera den första raden i en fil.
g Det brukade kopieras från innehavstexten.
G Den används för att lägga till från innehavstexten.
h Den används för att kopiera i innehavstexten.
H Den används för att lägga till innehavstexten.
i Den används för insättning.
Jag Den används för att skriva ut ersättningsraden.
n Den används för att gå till nästa rad.
N Den används för att lägga till nästa inmatningsrad.
sid Den används för att skriva ut.
P Den används för att skriva ut den första raden.
q Det används för att sluta.
F Den används för att sluta omedelbart.
r Den används för att läsa filen.
R Den används för att läsa raden från filen.
s Det används för att ersätta.
t Den används för att testa för substitution.
T Det används för att testa för inget substitution.
w Den används för att skriva till filen.
W Den används för att skriva en rad till filen.
x Den används för att byta mönster och hålla.
y Det används för att översätta.
z Den används för att rensa linjen.
'=' Den används för att skriva ut radnumret.

Byt ut flera rader med kommandot 'sed' från terminalen:

Hur kommandot 'sed' kan användas för att ersätta flera rader från en fil från terminalen visas i denna del av denna handledning. Skapa en fil med namnet sed.Text med följande innehållstest kommandona för denna del.

sed.Text

Den fullständiga formen av sed är "stream editor".

Det är ett Unix-verktyg som används för att läsa och konvertera texten i ett annat format.

Det utvecklades av Lee E. McMahon.

Den används för textbehandling.

Det stöder reguljära uttryck.

Exempel 1: Byt ut två på varandra följande linjer

Följande "sed" -kommando ersätter två på varandra följande rader med en annan rad. Här används alternativet -z för att ersätta de på varandra följande raderna med nolldata innan du lägger till ersättningstexten. Enligt kommandot, 3rd och 4th rader i filen kommer att ersättas med texten, 'Det är ett mycket användbart verktyg'.

$ katt sed.Text
$ sed -z / Det utvecklades av Lee E. McMahon.\ nDen används för text
bearbetning./ Det är ett mycket användbart verktyg./ 'sed.Text

Följande utdata visas när kommandona har körts.

Exempel 2: Ersätt flera rader baserat på matchning och global flagga

Följande "sed" -kommando ersätter alla rader som börjar med ordet, 'Det' med ordet, 'Denna rad ersätts ''.

$ katt sed.Text
$ sed s / ^ Det.* / Denna rad ersätts / g 'sed.Text

Följande utdata visas när kommandona har körts. Tre rader innehåller ordet 'Det'i filen. Så dessa rader har ersatts av ersättningstexten.

Exempel 3: Ersätt flera rader baserat på matchning och nästa rads kommando

Följande "sed" -kommando ersätter ordet, "är"med ordet,"var'med kommandot nästa rad,' n '.

$ katt sed.Text
$ sed 'n; / is / s / is / was /' sed.Text

Följande utdata visas när kommandona har körts. Här, 'är' finns i 2nd och 4th rader i filen, och dessa rader modifieras av ordet 'var'.

Byt ut flera rader genom att skapa skriptfilen 'sed':

I de föregående exemplen har "sed" -kommandon utförts från terminalen. Men det är ett skriptspråk, och om skriptet innehåller flera uttalanden är det bättre att skapa en sed-fil med skriptet. Skapa en textfil med namnet studenter.Text med följande innehåll där "sed" -skriptet kommer att tillämpas.

studenter.Text

ID: 111045
Namn: Robert
Avdelning: CSE
Parti: 35
ID: 111876
Namn: Joseph
Avdelning: BBA
Parti: 27
ID: 111346
Namn: William
Avdelning: CSE
Parti: 45
ID: 111654
Namn: Charles
Avdelning: EEE
Parti: 41
ID: 111346
Namn: John
Avdelning: CSE
Parti: 25
ID: 111746
Namn: Thomas
Avdelning: CSE
Parti: 15

Exempel 4: Ersätt flera rader i en fil med 'sed' skriptfil

Skapa en sed-fil som heter byta ut.sed med följande innehåll för att ersätta flera rader baserat på sökmönstret. Här, ordet 'CSE'kommer att sökas i textfilen, och om matchningen existerar, kommer den igen att söka nummer 35 och 15. Om den andra matchningen finns i filen kommer den att ersättas med siffran 45.

byta ut.sed

/ CSE /
p; n;
/ 35 /
s / 35/45 /;
p; d;

/ 15 /
s / 15/55 /;
p; d;


p;

Kör följande kommando för att kontrollera det befintliga innehållet i filen. "CSE" dök upp fyra gånger i textfilen. 35 och 15 finns på två platser.

$ kattstudenter.Text

Följande kommando ersätter innehållet på flera rader baserat på sed-skriptet.

$ sed -n -f ersätt.sed studenter.Text

Följande utdata visas när kommandot har körts.

Slutsats

Olika sätt att ersätta flera rader eller innehållet på flera rader med kommandot 'sed' har visats i denna handledning. Hur "sed" -skriptet kan köras från en sed-fil visas också i denna handledning. Jag hoppas att denna handledning hjälper läsaren att ersätta flera rader i vilken fil som helst genom att använda kommandot 'sed'.

Hur du fångar och strömmar din spelsession på Linux
Tidigare betraktades spel bara som en hobby, men med tiden såg spelindustrin en enorm tillväxt när det gäller teknik och antalet spelare. Spelpubliken...
Bästa spel att spela med handspårning
Oculus Quest introducerade nyligen den fantastiska idén om handspårning utan kontroller. Med ett ständigt ökande antal spel och aktiviteter som utför ...
Hur man visar OSD-överlägg i helskärms Linux-appar och -spel
Att spela helskärmsspel eller använda appar i distraktionsfritt helskärmsläge kan avskärma dig från relevant systeminformation som syns i en panel ell...