Sunteți pe pagina 1din 10

Comenzile sed, grep si find

Sed este o comand utilizat pentru transformarea secven elor de text. Comanda cite te
fi ierele de intrare linie cu linie, apoi modific fiecare linie corespunztor regulilor specificate
ntr-un limbaj simplu, i afi eaz linia. Ini ial, programul a fost creat ca un utilitar UNI de ctre
!ee ". #c#a$on la %ell !abs ntre &'() i &'(* dar acum este disponibil pe aproape orice
sistem de operare care suporta o linie de comand.
"xemple+
1. Inlocuirea sau substituirea unui string".Comanda sed este cel mai des folosita pentru a
inlocui un text intr-un fisier. "xemplul de mai jos inlocuieste cuvantul ,unix- cu ,linux- in
fisier
.s. specifica inlocuirea operatiei.
./. sunt delimitatori.
Cautarea se face dupa cuvantul .unix. si inlocuirea se face folosind cuvantul .linux..
Utilizata singura, comanda sed inlocuieste cuvantul cautat doar prima data cand il gaseste in
fiecare linie.
>sed 's/unix/linux/' file.txt
linux is great os. unix is opensource. unix is free os.
learn operating system.
linuxlinux which one you choose.
2. Inlocuieste cuvantul cautat a 2-a, a3-a oara 0etc1 atunci cand il intalneste intr-o linie
0folosind /&, /2, etc1.
Comanda de mai jos poate fi folosita pentru a inlocui cuvantul ,unix- cu ,linux- atunci cand
il intalneste a doua oara intr-o linie.
>sed 's/unix/linux/2' file.txt
unix is great os. linux is opensource. unix is free os.
learn operating system.
unixlinux which one you choose.
3. Inlocuieste un cuvant intr-o linie ori de cate ori il intalneste 0folosind /g ,inlocuire
globala-1
>sed 's/unix/linux/g' file.txt
linux is great os. linux is opensource. linux is free os.
learn operating system.
linuxlinux which one you choose.
. Inlocuieste un cuvant intr-o linie ori de cate ori il intalneste incepand cu a 2-a, a 3-a
!etc" aparitie in linia respective. Comanda urmatoare inlocuieste cuvantul ,unix- cu ,linux-
incepand cu a )-a apartie in linia respective
>sed 's/unix/linux/3g' file.txt
unix is great os. unix is opensource. linux is free os.
learn operating system.
unixlinux which one you choose.
#. Inlocuieste delimitatorul slas$ !%" cu bac&-slas$ !'"
3oate fi folosit orice alt delimitator, nu doar slas$. 4e exemplu, daca vrei sa modificu 5eb url in
alt url+
6sed 's/http:\/\//www/' file.txt
In acest caz url-ul este delimitatorul folosit. In cazul de mai sus substitutia se realizeaza numai
daca sunt folosite atat slas$ cat si bac7slas$.
8olosind prea multe bac7 slas$ comanda sed va arata ciudat, prin urmare in acest caz putem
sc$imba delimitatorul 0putem folosi 9 sau :1
>sed 's_http://_www_' file.txt
>sed 's|http://|www|' file.txt
(. Se foloseste ) ca si string de inlocuit. "ste folositor in cazul in care doresti sa cauti un
pattern si sa-l inlocuiesti adaugand niste caractere in plus. Caracterul ; reprezinta stringul cautat.
>sed 's/unix/!"/' file.txt
unix" is great os. unix is opensource. unix is free os.
learn operating system.
unix"linux which one you choose.
>sed 's/unix/!!"/' file.txt
unixunix" is great os. unix is opensource. unix is free os.
learn operating system.
unixunix"linux which one you choose.
*. +olosit alaturi de '1,'2 pana la ',. 3rima perec$e de paranteze din patern arata de cate ori
vrem sa inlocuim stringul respectiv. 4e exemplu, daca vrem sa inlocuim cuvantul ,unix- intr-o
linie cu acest cuvant dublat 0,unixunix-1 se poate folosi comanda sed de mai jos.
>sed 's/\#unix\$/\%\%/' file.txtunixunix is great os. unix is opensource. unix is free os.learn
operating system.
unixunixlinux which one you choose.
3arantezele trebuie sa fie insotite de bac7slas$. Un alt exemplu+ inversam cuvantul ,unixlinux-
cu ,linuxunix- folosind comanda de mai jos+
>sed 's/\#unix\$\#linux\$/\2\%/' file.txt
unix is great os. unix is opensource. unix is free os.
learn operating system.
linuxunix which one you choose.
-. .ubleaza linia inlocuita cu flagul %p. 8lagul de printare /p afiseaza pe terminal linia inlocuita
de 2 ori. 4aca linia nu contine patternul cautat si nu este inlocuita,este afisata o singura data.
>sed 's/unix/linux/p' file.txt
linux is great os. unix is opensource. unix is free os.
linux is great os. unix is opensource. unix is free os.
learn operating system.
linuxlinux which one you choose.
linuxlinux which one you choose.
,. /fiseaza doar liniile inlocuite. 8oloseste optiunea <n impreuna cu flagul /p pentru a afisa
doar liniile inlocuite. In acest caz optiunea <n inlocuieste randurile dublate generate de flagul /p
si printeaza liniile inlocuite o singura data. 4aca folosesti optiunea <n singura 0fara flagul /p1
atunci comanda sed nu afiseaza.
>sed &n 's/unix/linux/p' file.txt
linux is great os. unix is opensource. unix is free os.
linuxlinux which one you choose.
10. 1ularea mai multor comenzi sed. =e pot rula mai multe comenzi sed folosind outputul unei
comenzi sed ca si input pentru o alta comanda sed.
>sed 's/unix/linux/' file.txt| sed 's/os/system/'
linux is great system. unix is opensource. unix is free os.
learn operating system.
linuxlinux which one you chosysteme.
8olosind optiunea -e option se pot rula mai multe comenzi sed intr-o singura comanda sed.
>ezultatul de mai sus poate fi obtinut folosind o singura comanda, ca in exemplul urmator+
>sed &e 's/unix/linux/' &e 's/os/system/' file.txt
linux is great system. unix is opensource. unix is free os.
learn operating system.
linuxlinux which one you chosysteme.
11. Inlocuirea stringului pe o linie specificata. Comanda sed poate fi restrictionata sa
inlocuiasca un string pe o linie anume. Comanda de mai jos inlocuieste stringul cautat numai pe
cea de-a treia linie.
>sed '3 s/unix/linux/' file.txt
unix is great os. unix is opensource. unix is free os.
learn operating system.
linuxlinux which one you choose.
12. Inlocuirea unui string intr-un sir de linii. 3oti specifica sirul de linii in care comanda sed
sa actioneze inlocuind stringul cautat. In cazul de mai jos comanda sed inlocuieste liniile de la &
la ).
>sed '%'3 s/unix/linux/' file.txt
linux is great os. unix is opensource. unix is free os.
learn operating system.
linuxlinux which one you choose.
13. Inlocuirea in cadrul liniilor care contin patternul cautat.
#entionam patternul cautat pentru care comanda sed va face inlocuirea in linie. 4aca patternul
este gasit atunci comanda sed face inlocuirea. In exemplul de mai sus se cauta cuvantul ,linux-
care este apoi inlocuit cu ,centos-.
>sed '/linux/ s/unix/centos/' file.txt
unix is great os. unix is opensource. unix is free os.
learn operating system.
centoslinux which one you choose.
1. Stergerea liniilor. 3utem sterge liniile dintr-un fisier specificand numarul liniei sau sirul de
linii.
>sed '2 d' file.txt
>sed '(') d' file.txt
1#. 2ultiplicarea liniilor. 3utem folosi comanda sed pentru a afisa fiecare linie de doua ori.
>sed 'p' file.txt
1(. 3utem folosi comanda sed in locul comenzii grep. In exemplul de mai jos comanda sed
cauta patternul ,unix- in fiercare linie a fisierului si afiseaza de doua ori liniile unde patternul
este gasit.
>grep 'unix' file.txt
>sed &n '/unix/ p' file.txt
#ai poate fi folosita in loc de grep <v, prin inversarea comenzii sed folosind N?@ 0A1.
Caracterul A inverseaza patternul cautat.
6grep -v BunixB file.txt
6sed -n B/unix/ ApB file.txt
1*. /dauga o linie dupa patternul gasit.
Comanda sed poate adauga o linie noua dupa fiecare pattern gasit. sed command can add a ne5
line after a pattern matc$ is found. In exemplul de mai jos comanda sed adauga o linie noua dupa
fiecare ,a- gasit.
>sed '/unix/ a *+dd a new line*' file.txt
unix is great os. unix is opensource. unix is free os.
*+dd a new line*
learn operating system.
unixlinux which one you choose.
*+dd a new line*
1-. /dauga o linie inainte de patternul gasit. 3utem folosi comanda sed pentru a adauga o linie
nou inaintea patternului cautat. In exemplul de mai jos se adauga cate o linie inainte de fiecare
.i. gasit.
>sed '/unix/ i *+dd a new line*' file.txt
*+dd a new line*
unix is great os. unix is opensource. unix is free os.
learn operating system.
*+dd a new line*
unixlinux which one you choose.
1,. 2odificarea unei linii. Comanda sed poate fi folosita pentru a inlocui intreaga linie cu una
noua.
>sed '/unix/ c *,hange line*' file.txt
*,hange line*
learn operating system.
*,hange line*
20. +olosirea in locul comenzii tr. Comanda sed poate fi folosita pentru a inlocui un text cu
majuscule.
>sed 'y/ul/-./' file.txt
-nix is great os. -nix is openso-rce. -nix is free os.
.earn operating system.
-nix.in-x which one yo- choose.
Comanda grep este foarte des pentru a cauta cuvinte intr-un fisier. 8oarte importante sunt
optiunile si expresiile 0regular expressions1. 3ot fi analizate seturi mari de loguri cu ajutorul
comenzii grep. Comanda grep ne permite sa cautam in unul sau mai multe fisiere linii care contin
un anumit pattern. =tatus C daca patternul a fost gasit, & daca nu a fost gasit si 2 daca apar erori.
Drep este acronim pentru Dlobal searc$ for >egular "xpressions and 3rint.
1. 3utem rula ultima comanda grep e4ecutata. "ste folositoare atunci cand executam aceeasi
comanda in mod repetat. Comanda de mai jos afiseaza ultima comanda grep executata si afiseaza
rezultatul acesteia pe terminal.
/grep
2. Cauta un string intr-un fisier. @$is is t$e basic usage of grep command. It searc$es for t$e
given string in t$e specified file. @$is searc$es for t$e string ."rror. in t$e log file and prints all
t$e lines t$at $as t$e 5ord ."rror..
grep *0rror* logfile.txt
3. Cauta un string in mai multe fisere. "ste cel mai frecvent utilizat pentru asta. =e poate
specifica manual lista de fisiere in care sa se execute cautarea si patternul dupa care aceasta se
face.
grep *string* file% file2
grep *string* file_pattern
. Cautarea case insensitive. ?ptiunea ,i- activeaza o cautare care nu este sensibila la
majuscule. !a cautarea cuvantului unix va returna+ *-123*' *-nix*' *unix*.
grep &i *-1ix* file.txt
#. Se poate cauta o e4presie !regular e4pression" intr-un pattern. Comada de mai jos va cauta
liniile care incep cu un numar.
grep *456&78.9* file.txt
(. 5aseste un cuvant intr-un string. Drep poate gasi un substring intr-un string. Elaturi de
optiunea ,5- va cauta doar cuvantul intreg.
grep &w *world* file.txt
*. /fiseaza linia inaintea patternului cautat. "ste util atunci cand se cauta o eroare si este
necesar sa stim linia pe care se alfa eroarea.
grep &: 2 *0rror* file.txt
-. /fiseaza linia dupa patternul cautat. Comanda de mai jos va afisa liniile gasite alaturi de
alte urmatoarele ) linii.
grep &+ 3 *0rror* file.txt
,. /fiseaza linii inainte si dupa patternul cautat. Comanda de mai jos va afisa linia gasita, F
linii inaite si alte F dupa.
grep &, ( *0rror* file.txt
10. Cauta recursive un string in toate fisierele. 3oate cauta un string in toate directoarele si
subdirectoarele atunci cand este adaugata optiunea <r
grep &r *string* 9
11. Inverseaza cautarea patternului. 3oate afisa liniil care nu se potrivesc cu patternul cautat
folosinv optiunea -v.
grep &; *string* file.txt
12. /fiseaza liniile care nu sunt goale. =e pot inlatura liniile goale cu ajutorul comenzii grep.
grep &; *4)* file.txt
13. /fiseaza numarul de patternuri regasite in urma cautarii
grep &c *sting* file.txt
1. /fiseaza numele fisierelor in care se regaseste patternul cautat.
grep &l *string* file.txt
1#. /fiseaza numele fisierelor in care nu se regaseste patternul cautat.
grep &l *string* file.txt
1(. /fiseaza doar patternurile gasite. Neinsotit de alta optiunea, grep afiseaza intreaga linie in
care a fost gasit stringul cautat. 8olosind optiunea <o va afisa doar stringul cautat.
grep &o *string* file.txt
1*. /fiseaza numarul liniei. 3oate sa ne arata pozitia liniei care contine stringul cautat folosind
optiunea <n.
grep &n *string* file.txt
1-. /fiseaza pozitia stringului gasit in cadrul liniei. 3entu aceasta se foloseste optiunea <b
alaturi de comanda grep.
grep &o &< *string* file.txt
1,. 5aseste liniile care incep cu stringul cautat. 3entru aceasta se foloseste expresia ,G- pentru
a marca inceputul randului.
grep *4start* file.txt
20. 5aseste liniile care se termina cu stringul cautat. 3entru aceasta se foloseste expresia ,H-
pentru a marca sfarsitul randului.
grep *end)* file.txt
In sistemele de operare de tip UNI, comanda find permite cutarea unui fi ier prin unul sau
mai multe directoare. Cutarea este bazat pe o serie de criterii specificate de utilizator. 3osibile
criterii includ un pattern sau un interval de timp cJnd fi ierul a fost creat sau modificat.
>ezultatul comenzii este o list de nume de fi iere care respect criteriile specificate.
=intaxa acestei comenzi este+
find 5pathnames8 5conditions8
1. /fiseaza ultima comanda find care a fost e4ecutata. Efiseaza de asemenea si rezultatul
ultimei comenzi executate.
/find
2. Cautarea unui fisier dupa nume. Comanda de mai jos va gasi toate fisierele din directorul
current si subdirectoarele acestuia care au numele ,unix.linux-
find &name *unix.linux*
./<=p/unix.linux
./unix.linux
3. Cautarea fisierelor ingonrand ma6usculele. Comanda de mai jos va gasi toate fisierele din
directorul current si subdirectoarele acestuia care au numele ,unix.linux- ignorand majusculele.
./-nix.linux
./<=p/unix.linux
./unix.linux
. Cautarea unui fisier doar in directorul curent
find &maxdepth % &name *unix.linux*
./unix.linux
#. Cautarea fisierelor al caror nume contine cuvantul cautat. Comanda de mai jos afiseaza
toate fisierele care au cuvantul ,unix- in nume.
find &name *9unix9*
./-nix.linux
./<=p/unix.linux
./unix.linux
./multiply.unix
(. Cauta fisiere intr-un director specificat. Comanda de mai jos va cauta cuvantul ,unix- in
directorul /etc
find /etc &name *9unix9*
*. Cautarea fisierelor al caror nu nume contine cuvantul specificat. Inverseaza cautarea
cautand fiserele care nu contin .unix.linux..
find &not &name *unix.linux*
.
./-nix.linux
./<=p
./multiply.unix
-. 7imiteaza cautarea in directoarele specificate. In urma comenzii de mai jos vor fi afisate
fiseirele cu numele .unix.linux. din directorul curent si directoarele acestuia.
find &name *unix.linux*
./tmp/unix.linux
./<=p/;ar/tmp/files/unix.linux
./<=p/;ar/tmp/unix.linux
./<=p/;ar/unix.linux
./<=p/unix.linux
./unix.linux
,. /fiseaza fisierele din directorul curent si subdirectoarele aflate un nivel mai 6os
find &maxdepth 2 &name *unix.linux*
./tmp/unix.linux
./<=p/unix.linux
./unix.linux
10. /fiseaza fisierele din directorul curent si subdirectoarele aflate doua nivele mai 6os
find &maxdepth 3 &name *unix.linux*
./tmp/unix.linux
./<=p/;ar/unix.linux
./<=p/unix.linux
./unix.linux
11. /fiseaza fisierele din subdirectoarele aflate intre nivelul 1 si
find &mindepth 2 &maxdepth ( &name *unix.linux*
./tmp/unix.linux
./<=p/;ar/tmp/files/unix.linux
./<=p/;ar/tmp/unix.linux
./<=p/;ar/unix.linux
./<=p/unix.linux
12. Cauta fisierele goale dintr-un director
find . &maxdepth % &empty
./empty_file
13. Cauta cel mai mare fisier din directorul curent si subdirectoarele acestuia.
find . &type f &exec ls &s " \> | sort &n &r | head &%
Comanda .find . &type f &exec ls &s " \>. va afisa toate fisierele cu dimensunea alaturi. Epoi
comanda de sortare le va sorta in functie de dimenisune. Comanda head va allege doar prima
llinie din outputul sortat.
1. Cauta cel mai mic fisier din directorul curent si subdirectoarele acestuia.
find . &type f &exec ls &s " \> | sort &n &r | tail &%
sau+
find . &type f &exec ls &s " \> | sort &n | head &%
1#. Cauta fisiere dupa tipul acestora
Cauta soc7et files+ find . &type s
Cauta directoare+ find . &type d
Cauta directoarele ascunse+ find &type d &name *.9*
Cauta fisiere obisnuite+ find . &type f
Cauta fisirele ascunse+ find . &type f &name *.9*
1(. Cauta fisere pe baza dimensiunii
Cauta fiserele de &C#+ find . &si?e %6@
Cauta fisere mai mari de &C#+ find . &si?e A%6@
Cauta fisiere mai mici de &C#+ find . &si?e &%6@
1*. Cauta fisierele care au fost modificate dupa ce a fost modificat un anumit fisier
find &newer *unix.linux*
1-. Cauta fisierele care au fost accesate dupa ce a fost accesat un anumit fisier
find &anewer *unix.linux*
1,. 5aseste fisiere in functie de permisiune. Comanda de mai jos va afisa toate fisierele care au
permisiunile de citire, scriere si executare.
find . &perm BBB
20. Cauta fisierele care au fost modificate in ultima 6umatate de ora.
find . &mmin &36

S-ar putea să vă placă și