130 likes | 259 Views
Filtre UNIX. Prep. Drd. Aritoni Ovidiu. Filtre UNIX. Definitie. Un filtru este un program care modifică sau transformă intrarea sa. Filtrul citeşte rând cu rând fişierul standard de intrare şi afişeaza la ieşirea standard, rândurile citite, modificate sau nu, in funcţie de semantica lor.
E N D
Filtre UNIX Prep. Drd. Aritoni Ovidiu
Filtre UNIX. Definitie. Un filtru este un program care modifică sau transformă intrarea sa. Filtrul citeşte rând cu rând fişierul standard de intrare şi afişeaza la ieşirea standard, rândurile citite, modificate sau nu, in funcţie de semantica lor. In sistemele UNIX existǎ o serie de comenzi care se comportǎ ca filtre, majoritatea putând citi date şi din fişiere specificate in linia de comandǎ.
sort tr cut cat head tail paste uniq Comm Sed Grep tee wc xargs Filtre UNIX. Filtre mai des folosite:
Filtrul CAT Comanda cat scrie fiecare linie de la intrarea standard (sau din fişiere ale cǎror nume sunt date ca argumente) la ieşirea standard, fǎrǎ modificǎri. Comanda permite ca mai multe fişiere sa fie concatenate intr-un singur şir de ieşire, care va fi listat la terminal. Sintaxa: cat[fisier]. Exemplu: cat fis1 fis2 >newfile -> concateneazǎ fişierele fis1 si fis2 şi depune rezultatul in newfile.
Filtrul SORT Comanda sort este utilizatǎ pentru sortarea şi/sau interclasarea mai multor fişiere, afişând liniile citite in mod ordonat lexicografic, implicit ordinea fiind crescǎtoare. Sintaxa: sort [opţiuni] [-o f_out] [+poz1 [-poz2]] [fişier(e)] +poz1 si -poz2 -poziţia ocupată de cheia de sortare în cadrul unei linii. Opţiuni: -c -Se verifică dacă fişierul de intrare este sortat deja. -o f Trimite rezultatul sortării în fişierul f. Exemplu:sort -r -o out +1.0 -1.2 fis1 fis2 -> sortează în ordine inversă fişierele fis1 şi fis2 cheia fiind primul caracter din câmpul 2. Ieşirea este fişierul out.
Filtrul WC Comanda wcafiseaza numarul de caractere (parametrul -m), de octeti (-c), de linii (-l) sau se cuvinte (-w), sau lungimea celei mai lungi linii intalnite (parametrul -L). Exemplu: cat /etc/passwd | wc –l -> va afisa numarul de intrari (linii) in fisierul de parole.
Filtrul CUT Comanda cut extrage porţiuni specificate din fiecare linie din intrarea standard; tipǎreşte porţiuni din liniile citite. Sintaxa: cut opţiuni [fisier(e)] Opţiuni: -clista Extrage caracterele specificate în lista; -flista Extrage câmpurile specificate în lista; Exemple: $cut -f1,3-4 -d: -> Câmpurile 1, 3 şi 4 sunt extrase de pe fiecare linie cu delimitator de câmp caracterul ':'. $cut -c2,5-8,14- -> Extrage caracterele 2, 5 până la 8 şi 14 până la lungimea liniei.
Filtrul TR Comanda tr permite editarea unui fişier prin înlocuirea unui şir de caractere cu un altul, prin ştergerea anumitor caractere, sau prin înlocuirea caracterelor repetitive prin caractere singulare. Sintaxa: tr [opţiuni] [sir_1 [sir_2]] Exemplu: ps -x | tr -s ' ' | cut -f 2,6 -d ' ' -> ps -x afişeaza lista proceselor utilizatorului care o invoca; -> cu ajutorul lui tr -s ' ' se şterg spaţiile dintre coloanele afişate; -> cut -f 2,6 -d ' ' face sǎ aparǎ la ieşire doar coloana corespunzǎtoare identificatorilor de proces (coloana 2) şi cea a numelui comenzii corespunzǎtoare procesului (coloana 6).
Filtre complexe. GREP Este o comandǎ frecvent utilizatǎ pentru cǎutarea de tipare in fişiere text si opereazǎ lanivel de linie. Liniile citite de la intrarea standard (sau din fisierele date ca parametri) care se potrivesc cu expresia regulata data vor fi afisate. Rezultatul comenzii se poate afişa sau poate servi ca intrare pentru o alta comandǎ UNIX. Cele trei comenzi din familia grep sunt: grep, fgrep si egrep. Comanda grep cautã expresii regulate specificate conform editorului ed, algoritmul de cãutare fiind compact si nedeterminist. Comanda fgrep (Fast grep) cautã şiruri fixe, algoritmul de cãutare fiind compact si rapid. Comanda egrep (Extended Grep) cautã expresii regulate generalizate, algoritmul de cãutare fiind rapid si determinist.
Filtre complexe. GREP Sintaxagenerala a comenziilor: grep[optiuni] regexp [fisier(e)] fgrep[optiuni] regexp [fisier(e)] egrep[optiuni] regexp [fisier(e)] Optiuni: -v afişeaza liniile care nu contin sirul dat; -c (count) afişeazǎ numai numãrul de linii care se potrivesc cu sablonul; -h (hide) nu afişeazǎ numele fisierului; etc. Şablonul este o expresie regularǎ. Exemple: $grep ^if fis1 fis2 -> afiseaza liniile din fis1 si fis2 care incep cu if. ls -l | grep .r..r..r.. -> afiseaza toate fisierele si directoarele din directorul curent pentru care exista drepturi de citire (r = read) pentru toate cele trei categorii de utilizatori.
Mecanismul PIPE. Simbolul pipe-ului este o bara vertical (|), intre doua comenzi din linia de comanda. Mecanismul pipe este frecvent utilizat in Unix pentru combinarea unor comenzi. Exemple de filtre implementate cu ajutprul lui pipe: cat /etc/passwd | grep so ->Comenzile afiseaza linia cu informatiile despre contul so din fisierul /etc/passwd. Daca se doreste ca din iesirea comenzii ps sa se selecteze numai procesele care apartin unui utilizator si acestea sa fie afisate pe ecran, se poate proceda astfel: $ ps –aux >temp $ grep lili temp dar acelasi effect se poate obtine si printr-o linie de comanda unica in care apare un pipe: $ ps –aux | grep lili
Utilitatea filtrelor in programare. Un pipe este o cale de a construi ad-hoc rezultate compuse din orice numǎr de intrǎri, filtre şi unelete de manipulare a datelor astfel incat exista aproape o infinitate de moduri in care filtrele se pot combina si recombina. Folosind pipe-uri UNIX, se pot combina simple comenzi pentru a crea iesirea care satisface nevoile utilizatorului. Yahoo! Pipes este un editor visual pentru crearea aplicatiilor web care combina date din mai multe surse intr-un singur instrument integrat. Yahoo Pipes foloseste deci surse din alte website-uri.
Bibliografie: [1] http://users.utcluj.ro/~somodi/so2/lab04.html [2] http://users.utcluj.ro/~somodi/so2/lab05.html [3] http://labs.cs.utt.ro/labs/so/html/so3.html [4]http://jeremy.zawodny.com/blog/archives/008 513.html [5]http://www.unix.org.ua/orelly/unix/lrnunix/ch 05_02.htm [6] Sisteme de operare, Ioan Jurca, Ed.de Vest