Linux este un sistem plin de comenzi în care fiecare joacă un rol esențial în comportamentul anumitor sarcini, indiferent dacă acestea sunt utilizator, obiect sau management de asistență, fiecare comandă are participarea sa în Linux și una dintre aceste comenzi este Sed despre care vom vorbi la Solvetic în detalii.
Care este comanda sed în LinuxComanda sed este literalmente un editor de flux pe care îl putem folosi pentru a modifica lucrările pe text cu funcții de bază într-un flux de intrare fie dintr-un fișier, fie intrare dintr-o conductă, dacă este cazul.
Spre deosebire de alți editori de text, cu sed este posibil să filtrați textul într-o conductă pe măsură ce trecem peste conținutul selectat.
AvantajAvantajele utilizării sed pe Linux sunt:
- Putem selecta text
- Suntem capabili să înlocuim textul
- Adăugați linii la text
- Putem elimina liniile din text
- Vă permite să modificați sau să păstrați un fișier original
Sintaxa generală pentru utilizarea sed este următoarea:
OPȚIUNI sed … [SCRIPT] [INPUT_FILE …]Vom învăța câteva modalități de a utiliza această comandă pe Linux.
1. Cum se utilizează comanda SED în Linux
Utilizarea de bază a sedPentru acest exemplu vom folosi „ecou” pentru a vedea cum comanda sed poate înlocui o parte din textul introdus, introducem:
ecou solvitic | sed 's / vitic / vetic /'În acest caz, îi spunem sed să înlocuiască cuvântul „vitic” cu „vetic”, atunci când apăsați Enter, acesta va fi rezultatul:
MARI
Vedem că schimbarea este automată.
2. Selectarea textului cu comanda SED Linux
Pasul 1
În acest caz, vom avea un fișier text care este găzduit pe desktop:
MARI
Acum vom folosi următoarea linie:
mai puțin Solvetic.txtPasul 2
Când apăsați Enter, acesta va fi rezultatul:
MARI
Cu sed este posibil să selectăm câteva linii ale fișierului, pentru aceasta trebuie să indicăm liniile inițiale și finale ale intervalului de selectat, de exemplu, dacă vrem să extragem liniile două până la șapte executăm:
sed -n '2,7p' Solvetic.txtPasul 3
Vom vedea următoarele:
MARI
Trebuie să avem în vedere virgula din intervalele care urmează să fie atribuite (2,7), parametrul p indică faptul că înseamnă „tipăriți linii potrivite”, cu aceasta comanda sed va imprima toate liniile din intervalul respectiv și -n (silențios) ) opțiunea are grijă să nu afișeze text care nu se potrivește cu intervalul respectiv.
Pasul 4
Putem folosi parametrul -e (expresie) pentru a face mai multe selecții, de exemplu:
sed -n -e '1,2p' -e '5,6p' Solvetic.txt
MARI
Pasul 5
Cu sed este posibil să selectați linia de pornire, apoi indicăm care ar trebui parcursă în fișier și pentru a imprima liniile alternative, de exemplu, introducem:
sed -n '1 ~ 3p' Solvetic.txtÎn acest caz, primul număr se referă la linia de pornire, iar al doilea număr indică sed ce linii după linia de pornire vor fi afișate:
MARI
Pasul 6
O altă utilizare a sed este abilitatea de a selecta linii în care sunt modelele de text potrivite, dacă nu știm de unde provine numărul liniei, putem executa următoarele:
sed -n '/ Run / p' Solvetic.txt
MARI
Vom vedea liniile care încep cu acel termen.
3. Cum se creează înlocuiri cu SED Linux
Pasul 1
În partea de bază am văzut cum să înlocuim textul folosind sed, acolo am folosit parametrul -s (substituție). Apoi primul șir indică modelul de căutare, iar al doilea se referă la textul cu care urmează să fie înlocuit.
sed -n 's / tasks / actions / p' Solvetic.txtÎn acest exemplu, înlocuim „sarcini” cu „acțiuni”:
MARI
Pasul 2
Cu parametrul p sed se oprește automat după prima potrivire, pentru a efectua o căutare globală și a face modificarea în general trebuie să adăugăm „g”:
sed -n 's / tasks / actions / gp' Solvetic.txtDacă dorim să nu fie sensibil la majuscule, vom adăuga „i”:
sed -n 's / tasks / actions / gpi' Solvetic.txtPasul 3
Este posibil să creați restricții pentru înlocuiri numai la anumite secțiuni ale fișierului, în primul rând enumerăm liniile care urmează să fie analizate:
sed -n '1,3p' Solvetic.txt
MARI
Pasul 4
Să vedem următoarele, putem găsi unde există două spații și le putem înlocui cu unul:
sed -n '1,3 s / * / / gp' Solvetic.txtAsteriscul (*) reprezintă zero sau mai mult din caracterul selectat anterior.
Pasul 5
Puteți reduce modelul de căutare la un singur spațiu cu următoarea comandă:
sed -n '1,3 s / * / / gp' Solvetic.txtVedem diferența în rezultate:
MARI
În acest din urmă caz, asteriscul se potrivește cu zero sau mai mult din caracterul anterior, ceea ce face ca fiecare caracter non-spațial să arate ca un „spațiu zero” prin aplicarea comenzii.
Pasul 6
Pentru a face două sau mai multe înlocuiri simultan, executăm:
sed -n -e '/ executat / aplicat / gip' -e '/ task / actions / gip' Solvetic.txt
MARI
4. Opțiuni de înlocuire SED pe Linux
De asemenea, putem folosi sed pentru a extrage nume de fișiere din sistem, în acest caz trebuie să avem în vedere că fiecare obiect trebuie să se potrivească cu un model de căutare (subexpresii) care poate fi numerotat (până la maximum nouă elemente).
Pasul 1
Aceste numere pot fi apoi utilizate pentru a face referire la subexpresii specifice.
Subexpresia trebuie să fie inclusă între paranteze [()] și parantezele trebuie să fie precedate de o bară inversă (\), astfel încât să nu fie detectate ca un caracter normal, de exemplu:
sed 's / \ ([^:] * \). * / \ 1 /' / etc / passwd
MARI
Variabilele utilizate în această comandă sunt
- sed 's /: indică comanda sed și începutul expresiei de înlocuire.
- \ (: anexează subexpresia, precedată de o bară inversă
- [^:] *: este prima subexpresie a termenului de căutare care conține un grup între paranteze, semnul caret (^) înseamnă "nu" atunci când este utilizat într-un grup, adică orice caracter care nu este un punct
- \): Paranteze de închidere [)] cu o bară inversă
- . *: este a doua subexpresie de căutare care indică „orice caracter și orice număr dintre acestea”.
- / \ 1: este partea de înlocuire a expresiei care conține un număr 1 precedat de o bară inversă (\) și indică faptul că textul se potrivește cu prima subexpresie
- / ': terminați comanda sed
Pasul 2
Cu comanda anterioară am căutat orice șir de caractere care nu conține două puncte, deoarece fiecare linie a fișierului / etc / passwd începe cu numele de utilizator care se termină cu două puncte. Putem înlocui această valoare izolând numele de utilizator cu următoarea comandă:
sed 's / \ ([^:] * \) \ (. * \) / \ 2 /' / etc / passwd
MARI
Pasul 3
Putem afișa numai numele utilizatorilor cu următoarea comandă:
sed 's /:.*// "/ etc / passwdO altă opțiune cu sed este de a utiliza parametrul c (cut - cut) pentru a înlocui textul dintr-un fișier, de exemplu:
sed '/ Linux / c Sistem de operare Linux' Solvetic.txt
MARI
5. Introduceți linii și text cu SED în Linux
Pasul 1
O altă sarcină de utilizat cu sed este de a insera noi linii și text într-un fișier, în acest caz avem următoarele date:
MARI
Pasul 2
Putem insera o nouă linie specificând sub care va fi inserată:
sed '/ Ub / a -> Inserat!' Solvetic.txt
MARI
Pasul 3
De asemenea, este posibil să utilizați comanda Insert (i) pentru a insera o nouă linie deasupra potrivirii:
sed '/ Wi / i -> Inserat!' Solvetic.txt
MARI
Pasul 4
Putem folosi semnul ampersand (&) pentru a adăuga text nou la o linie potrivită din fișier, executăm:
sed 's /.*/--> Inserted & /' Solvetic.txt
MARI
6. Cum să ștergeți o linie cu SED Linux
Pentru acest caz trebuie să folosim parametrul d (șterge), pentru a șterge de exemplu a doua linie pe care o executăm:
sed '2d' Solvetic.txt
MARI
Dacă este necesar, putem elimina o gamă:
sed '1,4d' Solvetic.txtPentru a elimina liniile din afara unui interval, trebuie să folosim un punct de exclamare (!) După cum urmează:
sed '2,4! d' Solvetic.txt
7. Cum se salvează modificările cu SED în Linux
Pasul 1
Pentru a aplica modificările făcute, este posibil să utilizați opțiunea In-place (-i) pentru ca sed să scrie modificările în fișierul original, dar pentru o mai mare securitate putem adăuga o extensie de rezervă după cum urmează (am făcut backup) liniile care conțin cuvântul Wi):
sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txtEnumerăm conținutul:
pisică Solvetic.txt.bak
MARI
Pasul 2
Este posibil să redirecționați ieșirea către un fișier nou cu aceleași rezultate:
sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt> Solvetic1.txt
MARI
Cu sed putem lucra cu fișierele într-un mod complet complet în Linux, deoarece am văzut fiecare dintre opțiunile sale de utilizare.