This shows you the differences between two versions of the page.
uso-ac:laboratoare:laborator-10 [2016/12/10 23:06] giorgiana.vlasceanu created |
uso-ac:laboratoare:laborator-10 [2016/12/10 23:18] (current) giorgiana.vlasceanu [2. Expresii regulate (1p)] |
||
---|---|---|---|
Line 442: | Line 442: | ||
</note> | </note> | ||
- | ==== 1. Opțiuni pentru grep (2p) ==== | + | ==== 1. Opțiuni pentru grep (4p) ==== |
Ne propunem să aflăm care sunt fișierele de tip header (cu extensia ''.h'' sau ''.hpp'') din sistem care au cele mai multe macro-uri definite. Pentru aceasta vom folosi comanda ''grep'' cu opțiuni specifice și apoi comanda ''sort'' pentru a sorta datele în ordinea numărului de apariții de definiții de macro-uri. | Ne propunem să aflăm care sunt fișierele de tip header (cu extensia ''.h'' sau ''.hpp'') din sistem care au cele mai multe macro-uri definite. Pentru aceasta vom folosi comanda ''grep'' cu opțiuni specifice și apoi comanda ''sort'' pentru a sorta datele în ordinea numărului de apariții de definiții de macro-uri. | ||
Line 454: | Line 454: | ||
</note> | </note> | ||
- | === 1.1. Extragere linii ce conțin definiții de macro-uri (0.5p) === | + | === 1.1. Extragere linii ce conțin definiții de macro-uri (1p) === |
Pentru început, ca să aveți un punct de plecare, veți extrage liniile ce conțin definiții de macro-uri pentru un singur fișier header dat. Recomandăm să folosiți ca intrare fișierul ''/usr/include/stdio.h''. | Pentru început, ca să aveți un punct de plecare, veți extrage liniile ce conțin definiții de macro-uri pentru un singur fișier header dat. Recomandăm să folosiți ca intrare fișierul ''/usr/include/stdio.h''. | ||
Line 484: | Line 484: | ||
</solution> | </solution> | ||
- | === 1.2. Extragere linii ce conțin definiții de macro-uri în ierarhia /usr/include (0.5p) === | + | === 1.2. Extragere linii ce conțin definiții de macro-uri în ierarhia /usr/include (1p) === |
În continuare veți extinde comanda anterioară și veți folosi ''grep'' cu opțiunea de **recursivitate** pentru a extrage liniile ce conțin definiții de macro-uri pentru toate fișierele din ierarhia ''/usr/include/''. | În continuare veți extinde comanda anterioară și veți folosi ''grep'' cu opțiunea de **recursivitate** pentru a extrage liniile ce conțin definiții de macro-uri pentru toate fișierele din ierarhia ''/usr/include/''. | ||
Line 517: | Line 517: | ||
</solution> | </solution> | ||
- | === 1.3. Obținere număr de linii ce conțin definiții de macro-uri în ierarhia /usr/include (0.5p) === | + | === 1.3. Obținere număr de linii ce conțin definiții de macro-uri în ierarhia /usr/include (1p) === |
În continuare veți extinde comanda anterioară și veți folosi ''grep'' cu opțiunea de **recursivitate** și cea de **contorizare** pentru a furniza ca output fișierele din ierarhia ''/usr/include'' împreună cu numărul de linii care conțin definiții de macro-uri. | În continuare veți extinde comanda anterioară și veți folosi ''grep'' cu opțiunea de **recursivitate** și cea de **contorizare** pentru a furniza ca output fișierele din ierarhia ''/usr/include'' împreună cu numărul de linii care conțin definiții de macro-uri. | ||
Line 540: | Line 540: | ||
- | === 1.4. Sortare după numărul de linii ce conțin definiții de macro-uri (0.5p) === | + | === 1.4. Sortare după numărul de linii ce conțin definiții de macro-uri (1p) === |
În final, veți sorta output-ul comenzii anterioare în funcție de numărul de linii care conțin definiții de macro-uri. Vrem să aflăm care sunt fișierele de tip header din ierarhia ''/usr/include'' care conțin cel mai mare număr de definiții de macro-uri. | În final, veți sorta output-ul comenzii anterioare în funcție de numărul de linii care conțin definiții de macro-uri. Vrem să aflăm care sunt fișierele de tip header din ierarhia ''/usr/include'' care conțin cel mai mare număr de definiții de macro-uri. | ||
Line 576: | Line 576: | ||
</solution> | </solution> | ||
- | ==== 2. Expresii regulate (1p) ==== | + | ==== 2. Expresii regulate (2p) ==== |
Ne propunem să sedimentăm noțiunile legate de expresii regulate. Vom folosi ''grep'' și expresii regulate pentru a face două prelucrări peste fișierul ''/usr/share/vim/vim74/tutor/tutor'': | Ne propunem să sedimentăm noțiunile legate de expresii regulate. Vom folosi ''grep'' și expresii regulate pentru a face două prelucrări peste fișierul ''/usr/share/vim/vim74/tutor/tutor'': | ||
Line 706: | Line 706: | ||
</solution> | </solution> | ||
- | ==== 3. Parsare folosind tab ca separator (1p) ==== | + | ==== 3. Parsare folosind tab ca separator (2p) ==== |
În secțiunea [[#parsare_date_tabelare_in_shell|Parsare date tabelare în shell]] am folosit la intrare fișierul ''students.csv'', fișier format CSV (//Comma Separated Values//) care folosește virgula ('','', //comma//) pe post de separator de câmpuri. Ne propunem să folosim la intrare fișierul ''students.txt'' care folosește caracterul tab pe post de separator de câmpuri. | În secțiunea [[#parsare_date_tabelare_in_shell|Parsare date tabelare în shell]] am folosit la intrare fișierul ''students.csv'', fișier format CSV (//Comma Separated Values//) care folosește virgula ('','', //comma//) pe post de separator de câmpuri. Ne propunem să folosim la intrare fișierul ''students.txt'' care folosește caracterul tab pe post de separator de câmpuri. | ||
Line 743: | Line 743: | ||
</solution> | </solution> | ||
- | ==== 4. Selectare studenți care au nota 10 (1p) ==== | + | ==== 4. Selectare studenți care au nota 10 (2p) ==== |
Ne propunem să actualizăm scriptul anterior ''extract-name-tab'' pentru a afișa doar numele studenților pentru acei studenți care au nota finală ''10'' (a treia coloană are valoarea ''10''). | Ne propunem să actualizăm scriptul anterior ''extract-name-tab'' pentru a afișa doar numele studenților pentru acei studenți care au nota finală ''10'' (a treia coloană are valoarea ''10''). | ||
Line 810: | Line 810: | ||
</solution> | </solution> | ||
- | ==== 5. Selectare și sortare studenți care au nota între 6 și 9 (2p) ==== | + | |
+ | ===== Bonus ===== | ||
+ | |||
+ | ==== 0. Selectare și sortare studenți care au nota între 6 și 9 (2 karma WoUSO) ==== | ||
Ne propunem să realizăm un script numit ''extract-sort-grades'' pentru a afișa numele studenților, grupa și nota finală pentru acei studenți care au nota finală cuprinsă între ''6'' și ''9'' inclusiv. Adică valoarea de pe a treia coloană să fie ''6'', ''7'', ''8'' sau ''9''. Apoi vom sorta intrările în ordinea notei și apoi în ordinea grupei (adică dacă au aceeași notă să fie sortați în ordinea grupei). | Ne propunem să realizăm un script numit ''extract-sort-grades'' pentru a afișa numele studenților, grupa și nota finală pentru acei studenți care au nota finală cuprinsă între ''6'' și ''9'' inclusiv. Adică valoarea de pe a treia coloană să fie ''6'', ''7'', ''8'' sau ''9''. Apoi vom sorta intrările în ordinea notei și apoi în ordinea grupei (adică dacă au aceeași notă să fie sortați în ordinea grupei). | ||
Line 825: | Line 828: | ||
- Trebuie sortate intrările obținute în ordinea notelor și în ordinea grupei. | - Trebuie sortate intrările obținute în ordinea notelor și în ordinea grupei. | ||
- | === 5.1. Selectare studenți care au nota între 6 și 9 (1p) === | + | === 0.1. Selectare studenți care au nota între 6 și 9 (1 karma WoUSO) === |
<spoiler Click pentru indicații> | <spoiler Click pentru indicații> | ||
Line 883: | Line 886: | ||
La rularea scriptului ''extract-sort-grades'' veți obține numele studenților, grupa și nota finală pentru studenții a căror notă finală este cuprinsă între ''6'' și ''9''. | La rularea scriptului ''extract-sort-grades'' veți obține numele studenților, grupa și nota finală pentru studenții a căror notă finală este cuprinsă între ''6'' și ''9''. | ||
- | === 5.2. Sortare studenți care au nota între 6 și 9 (1p) === | + | |
+ | |||
+ | === 0.2. Sortare studenți care au nota între 6 și 9 (1 karma WoUSO) === | ||
În continuare actualizați scriptul folosind operatorul de secvențiere (''|'', //pipe//) și comanda ''sort'' cu opțiunile necesare pentru a sorta ieșirea comenzii în ordinea notei și apoi a grupei. | În continuare actualizați scriptul folosind operatorul de secvențiere (''|'', //pipe//) și comanda ''sort'' cu opțiunile necesare pentru a sorta ieșirea comenzii în ordinea notei și apoi a grupei. | ||
Line 967: | Line 972: | ||
</solution> | </solution> | ||
- | ==== 6. Conversie de fișiere imagine (3p) ==== | + | ==== 1. Conversie de fișiere imagine (3 karma WoUSO) ==== |
Dorim să realizăm un script care să automatizeze rescalarea dimensiunii unor fișiere imagine. | Dorim să realizăm un script care să automatizeze rescalarea dimensiunii unor fișiere imagine. | ||
Line 1053: | Line 1058: | ||
</code> | </code> | ||
</solution> | </solution> | ||
- | ===== Bonus ===== | ||
- | ==== 1. Selectare studenți după notă fracționară (1 karma point) ==== | + | |
+ | ==== 2. Selectare studenți după notă fracționară (1 karma point) ==== | ||
Ne propunem să selectăm studenții care au obținut la testul grilă notă mai mare sau egală cu ''8''. Este vorba de coloana a 4-a din fișierele de intrare (''students.txt'' sau ''students.csv''). | Ne propunem să selectăm studenții care au obținut la testul grilă notă mai mare sau egală cu ''8''. Este vorba de coloana a 4-a din fișierele de intrare (''students.txt'' sau ''students.csv''). | ||
Line 1095: | Line 1100: | ||
</solution> | </solution> | ||
- | ==== 2. Selectare studenți după note fracționare (1 karma point) ==== | + | ==== 3. Selectare studenți după note fracționare (1 karma point) ==== |
Ne propunem să selectăm studenții care au obținut la testul grilă notă mai mare sau egală cu ''8'' (coloana a 4-a) **și** care au obținut la testul grilă notă mai mică sau egală ca cea de la testul practic (coloana a 5-a). | Ne propunem să selectăm studenții care au obținut la testul grilă notă mai mare sau egală cu ''8'' (coloana a 4-a) **și** care au obținut la testul grilă notă mai mică sau egală ca cea de la testul practic (coloana a 5-a). | ||
Line 1124: | Line 1129: | ||
</solution> | </solution> | ||
- | ==== 3. Sortare studenți în grupă (1 karma point) ==== | + | ==== 4. Sortare studenți în grupă (1 karma point) ==== |
Ne propunem să afișăm studenții unei grupe, sortați după nota finală (coloana a 3-a). | Ne propunem să afișăm studenții unei grupe, sortați după nota finală (coloana a 3-a). | ||
Line 1171: | Line 1176: | ||
</code> | </code> | ||
</solution> | </solution> | ||
- | ==== 4. Sortare grupe după note de 10 obținute de studenți (2 karma points) ==== | + | ==== 5. Sortare grupe după note de 10 obținute de studenți (2 karma points) ==== |
Ne propunem să afișăm grupele sortate în funcție de câți studenți din acea grupă au obținut nota ''10''. | Ne propunem să afișăm grupele sortate în funcție de câți studenți din acea grupă au obținut nota ''10''. |