sed Comandă pentru a înlocui un șir într-un fișier

Sed Command Replace String File



Ori de câte ori lucrăm cu orice fel de fișiere, este o practică foarte obișnuită să facem modificări la aceste fișiere prin găsirea și înlocuirea cuvintelor. Majoritatea editorilor de text oferă diferite metode bazate pe GUI pentru a efectua aceste modificări. Cu toate acestea, uneori, aveți nevoie de o modalitate de a găsi și înlocui cuvintele dintr-un fișier prin terminal. Prin urmare, în acest articol, vă vom prezenta prin metoda de utilizare a comenzii sed pentru a înlocui un șir într-un fișier text. De asemenea, vom arunca o lumină asupra diferitelor scenarii în care această comandă poate fi utilizată.

Notă: Vom folosi Linux Mint 20 pentru a demonstra utilizarea comenzii sed pentru a înlocui un șir într-un fișier. Puteți utiliza, de asemenea, orice altă aromă Linux, dacă doriți.







Utilizarea comenzii sed:

Acum vă vom arăta câteva exemple foarte interesante pentru descrierea utilizării comenzii sed în Linux. Să vedem cum funcționează această comandă în diferite scenarii.



Crearea unui fișier text pentru demonstrație:

Pentru a demonstra utilizarea comenzii sed, am dori să lucrăm cu un fișier text. Cu toate acestea, puteți chiar să creați un fișier Bash sau orice alt fișier la alegere. În al doilea rând, vom crea fișierul în directorul Acasă, astfel încât să nu trebuie să specificăm căi complexe în timp ce accesăm acest fișier. Pentru crearea unui fișier text, trebuie parcurși următorii pași:



Faceți clic pe pictograma Manager fișiere aflată pe bara de activități Linux Mint 20:





Acum creați un nou fișier text în directorul Acasă făcând clic dreapta oriunde și apoi alegând opțiunea Document nou din meniul în cascadă și opțiunea Golire document din meniul sub-cascadă. Odată ce fișierul text a fost creat, dați-i un nume adecvat. Pentru acest exemplu, l-am numit sed.txt.



Faceți dublu clic pe acest fișier pentru al deschide și tastați orice text aleatoriu, așa cum se arată în imaginea de mai jos. Salvați acest fișier text apăsând Ctrl + S și apoi închideți-l.

Acum lansați terminalul în Linux Mint 20 așa cum se arată în următoarea imagine:

După lansarea terminalului în Linux Mint 20, puteți parcurge toate exemplele menționate mai jos unul câte unul.

Utilizarea comenzii sed pentru înlocuirea tuturor aparițiilor unui cuvânt dat:

Puteți utiliza comanda sed pentru înlocuirea tuturor aparițiilor unui cuvânt dat într-un fișier text. Sintaxa realizării acestui obiectiv este menționată mai jos:

$sed‘S/sed/FindWord/ReplaceWord/’File.txt

Aici, trebuie să înlocuiți FindWord cu cuvântul pe care doriți să îl înlocuiți și ReplaceWord cu cuvântul de înlocuit. Mai mult, trebuie să înlocuiți fișierul cu numele fișierului în care doriți să efectuați aceste înlocuiri. În acest scenariu, am înlocuit FindWord cu sed și ReplaceWord cu replace. Numele fișierului nostru a fost sed.txt. Este, de asemenea, afișat în următoarea imagine:

Executarea cu succes a acestei comenzi vă va arăta modificările care au avut loc din cauza executării acestei comenzi pe terminalul dvs.:

Folosind comanda sed pentru înlocuirea apariției a un cuvânt dat în fiecare linie:

Scenariul de mai sus a fost cel mai simplu scenariu de înlocuire, cu toate acestea, uneori, nu doriți să înlocuiți toate aparițiile unui cuvânt, ci mai degrabă doriți să înlocuiți doar prima, a doua sau a n-a apariție a acelui cuvânt în toate rândurile. Pentru aceasta, puteți executa următoarea comandă:

$sed‘S/FindWord/ReplaceWord/num ’file.txt

Aici, trebuie să înlocuiți FindWord cu cuvântul pe care doriți să îl înlocuiți și ReplaceWord cu cuvântul de înlocuit. Mai mult, trebuie să înlocuiți fișierul cu numele fișierului în care doriți să efectuați aceste înlocuiri. În acest scenariu, am înlocuit FindWord înlocuiește și ReplaceWord cu sed. Numele fișierului nostru a fost sed.txt. De asemenea, num se referă la apariția sau poziția cuvântului de înlocuit. În exemplul demonstrat, vreau să înlocuiesc prima apariție de înlocuire cu sed în fiecare linie, așa cum se arată în imaginea de mai jos:

Executarea cu succes a acestei comenzi vă va arăta modificările care au avut loc din cauza executării acestei comenzi pe terminalul dvs.:

Utilizarea comenzii sed pentru înlocuirea unui cuvânt dat într-o linie specifică:

Uneori, doriți doar să înlocuiți un cuvânt dat într-o anumită linie și nu în întregul document. Pentru a face acest lucru, trebuie să specificați în mod explicit acel număr de linie în următoarea comandă:

$sed„LineNum s/FindWord/ReplaceWord/’File.txt

Aici, trebuie să înlocuiți FindWord cu cuvântul pe care doriți să îl înlocuiți și ReplaceWord cu cuvântul de înlocuit. Mai mult, trebuie să înlocuiți fișierul cu numele fișierului în care doriți să efectuați aceste înlocuiri. În acest scenariu, am înlocuit FindWord sed și ReplaceWord cu replace. Numele fișierului nostru a fost sed.txt. De asemenea, trebuie să înlocuiți LineNum cu numărul liniei respectivei linii în care doriți să efectuați înlocuirea. În acest exemplu, am vrut să înlocuim sed cu înlocuiți în linia numărul 2 din fișierul nostru, așa cum se arată în următoarea imagine:

Executarea cu succes a acestei comenzi vă va arăta modificările care au avut loc din cauza executării acestei comenzi pe terminalul dvs. Puteți verifica cu ușurință dacă modificările menționate au avut loc numai pe linia numărul 2 din fișierul nostru și nu în întregul text.

Concluzie:

Ori de câte ori simțiți nevoia de a înlocui orice cuvânt dintr-un fișier, primul lucru pe care trebuie să-l faceți este să identificați cerința dvs. particulară, adică dacă doriți să înlocuiți acel cuvânt specific din întregul fișier sau doriți să înlocuiți o apariție specifică a respectivul cuvânt sau doriți să înlocuiți acel cuvânt într-o anumită linie. După ce ați identificat scenariul dvs. particular, puteți utiliza acea metodă specifică din exemplele discutate în acest articol.