Capitolul Introducere & Instalare Capitolul structura Linux Capitolul Comenzi si Editoare



Yüklə 0,94 Mb.
səhifə9/23
tarix28.08.2018
ölçüsü0,94 Mb.
#75662
1   ...   5   6   7   8   9   10   11   12   ...   23

Regular Expressions


expresie regulata (regex) reprezinta o modalitate (metoda) de identificare a unui string (sir de caractere) dintr-un text dat conform anumitor reguli. Un regex este reprezentat fizic printr-un string format din caractere speciale. 

Reguli:
1. Blocul fundamental reprezinta un singur caracter si se selecteaza pe sine
2. O expresie paranteza patrata (bracket expression) reprezinta o lista de caractere cuprinsa intre "[" si "]" si descrie un singur caracter din acea lista. 
3. Daca primul caracter este ^ (caret) descrie orice caracter care nu se gaseste in lista. 
Exemplu: regex-ul [0123456789] - reprezinta o singura cifra iar [^0123456789] reprezinta orice caracter care nu este cifra.
4. In interiorul unei expresii paranteza patrata un "range expression" reprezinta 2 caractere separate prin -(minus) si selecteaza(identifica) orice caracter care se gaseste intre cele 2 caractere din range expression.
5. ^ (caret) in afara parantezelor drepte reprezinta un metacaracter care identifica inceputul unei linii (daca este primul caracter din regex).
6. $ reprezinta un metacaracter care identifica sfarsitul unei linii (daca este ultimul caracter din regex)

Exemplu

http://www.invata-online.ro/img/course/note-symbol.gif


^ab - linie care incepe cu ab
ab$ - linie care se termina cu ab
^$ - linie goala
^a[a-z0-9] - linie care incepe cu "a" urmat de orice caracter intre "a" si "z" sau "0" si "9"


7. backslash ("\") urmat de un caracter special selecteaza caracterul special respectiv. Caractere speciale sunt: ., *, [, \ (punct, asterix, paranteza dreapta deschisa si backslash). Caracterul special "." (punct) selecteaza orice caracter mai putin NEWLINE (linie goala) 
8. "?" (semnul intrebarii) selecteaza 0 sau 1 caractere anterioare 
9. * (asterix) selecteaza zero (0) sau mai multe caractere anterioare 
10. + (doar pt. expresii regulate extinse) selecteaza caracterul anterior o data sau de mai multe ori 
11. {n} Elementul precedent este selectat de n ori (exact) 
12. {n,} Elementul precedent este selectat de n sau mai multe ori 
13. {n,m} Elementul precedent este selectat de cel putin n ori dar nu mai mult de m ori 

Cand folosim acolade trebuie sa le precedam cu backslash ("\")



Exemplu

http://www.invata-online.ro/img/course/note-symbol.gif


1. Gasirea tuturor liniilor care contin un string de tip CNP dintr-un fisier numit file1 (se presupune ca un CNP incepe cu 1,2 sau 7 pentru cetatenii straini rezidenti).
grep '[127][0-9]\{12\}' file1 
Daca se doreste gasirea tuturor liniilor care contin DOAR string de tip CNP se foloseste "^" pentru ancorarea regex-ului la inceput de rand si "$" pentru ancorarea regexului la sfarsit de rand. 
grep '^[127][0-9]\{12\}$' file1 

2. Sa se creeze un fisier care sa contina toate fisierele si doar fisiere (de tip regular file) din /etc eliminand liniile goale liniile care contin cuvantul 'total' sau liniile care afiseaza directoare
ls -lR /etc/ | egrep -v '(^$|^total|^/)' > etc_content 


Comenzile find si grep


1. find 
Comanda find cauta fisiere si directoare dupa criterii complexe in mod recursiv
find [path...] [expression] 

Daca unul dintre argumente este numeric si are valoarea n se poate folosi:



+n

for greater than n

-n

for less than n

n

for exactly n


-type f = tipul este fisier 
-type d = tipul este director 
-user uname = userul este uname
-group gname = grupul owner este gname
-maxdepth nr = specifica cate nivele in jos, in structura de directoare sa caute. Default este infinit, cauta recursiv pana la ultimul subdirector
-links n = fisierul are n hard link-uri 
-perm mode = permisiunile fisierului sunt exact mode (octal or symbolic). 
-perm -mode = all of the permission bits mode are set for the file.
-perm +mode = any of the permission bits mode are set for the file.
-size n = marimea fisierului este n (poate fi folosit ca sufix c=bytes, b=blocuri de 512 bytes,k=kilobytes, M=megabytes, G=gigabytes). 
Se poate folosi +n = mai mare decat n, -n mai mic decat n
-inum inode_number = fisierul are nr. inod inode_number
-name REGEX = cauta dupa nume folosind regular expression (vezi capitolul referitor la regular expressions)

Exemplu

http://www.invata-online.ro/img/course/note-symbol.gif


1. Cauta recursiv fisiere cu dimensiunea mai mare de 2M care-l au owner pe root
find / -size +2M -user root -type f 

2. Cauta fisierele din /etc care nu-l au owner pe root
find /etc -not -user root 

3. Cauta fisierele din /home/data care contin denumirea Linux in nume, 2 nivele (subdirectoare) in jos 
find /home/data -maxdepth 2 -name Linux 

4. Cauta fisierele din / care au permisiunea SUID setata (alte detalii in capitolul Permisiuni speciale
find / -type f -perm -4000

Criteriile comenzii find sunt asociate folosind SI logic (optiunea -a care este default) si SAU logic ( -o



Nota

http://www.invata-online.ro/img/course/note-symbol.gif


Fisierele pot fi cautate de asemenea folosind comanda locate. Aceasta comanda nu cauta direct in sistemul de fisiere ci cauta intr-un fisier de tip index care trebuie creat anterior. Pe Ubuntu fisierul este/var/lib/mlocate/mlocate.db. Modificarea fisierelor pe hard disk (stergere, creare de noi fisiere, redenumire) nu actualizeaza in timp real mlocate.db. Comanda updatedb este cea care actualieaza indexul folosit de comanda locate cu situatia reala de pe hard disk. In general comanda updatedb se ruleaza in mod automat din cron o data pe zi. Avantajul comenzii locate este rapiditatea cu care sunt gasite fisierele, iar dezavantajul este lipsa optiunilor complexe de cautare.



2. grep

grep [options] PATTERN [FILE...] - cauta sabloane de text (string patterns) in FILE sau in outputul unei comenzi
-i = ignore case
-n = line number din fisierul in care a fost gasit patternul
-R = recursive
-v = invert match
-w = cauta numai cuvinte
-H = afiseaza numele fisierului in care a fost gasit pattern-ul

Exemplu

http://www.invata-online.ro/img/course/note-symbol.gif


1. Cautare cuvantul 'nameserver' in toate fisierele din /etc/
  grep 'nameserver' /etc/*

2. Cautare cuvantul 'root' in /etc/passwd cu afisarea numarului liniei pe care se gaseste
grep -n 'root' /etc/passwd 

3. Cautarea tuturor proceselor numite httpd care ruleaza
ps -ef | grep httpd

Resurse:

 YouTube - Grep tutorial



Yüklə 0,94 Mb.

Dostları ilə paylaş:
1   ...   5   6   7   8   9   10   11   12   ...   23




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin