▷ Cum se utilizează comanda SED în Linux - EXEMPLE

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.txt
Pasul 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.txt
Pasul 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.txt
Dacă dorim să nu fie sensibil la majuscule, vom adăuga „i”:
 sed -n 's / tasks / actions / gpi' Solvetic.txt
Pasul 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.txt
Asteriscul (*) 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.txt
Vedem 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 / passwd
O 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.txt
Pentru 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.txt
Enumeră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.

wave wave wave wave wave