Differences

This shows you the differences between two versions of the page.

Link to this comparison view

uso:laboratoare:laborator-08:basics [2021/10/04 20:43]
127.0.0.1 external edit
uso:laboratoare:laborator-08:basics [2021/11/26 03:34] (current)
mihai_daniel.soare [tr & sed]
Line 44: Line 44:
  
 <note important>​ <note important>​
-Este recomandat ca argumentul de tip expresie regulată transmis comenzii ''​grep''​ să fie plasat între apostrofuri (''​%%'​%%''​) pentru a fi escapat. În felul acesta caracterele din expresia regulată vor fi transmise întocmai comenzii ''​grep''​ și nu vor fi interpretate de shell.+Este recomandat ca argumentul de tip expresie regulată transmis comenzii ''​grep''​ să fie plasat între apostrofuri (''​%%'​%%''​) pentru a fi escapat. În felul acestacaracterele din expresia regulată vor fi transmise întocmai comenzii ''​grep''​ și nu vor fi interpretate de shell.
 </​note>​ </​note>​
  
Line 74: Line 74:
 </​spoiler>​ </​spoiler>​
  
-Doar că expresia ''​z''​ nu se potrivește (nu face //match//) pe litera ''​Z''​ (majusculă). Pentru a selecta studenții al cărore nume conține atât litera ''​z''​ cât și ''​Z''​ (majusculă) folosim expresia regulată ''​%%[zZ]%%''​ și comanda+Doar că expresia ''​z''​ nu se potrivește (nu face //match//) pe litera ''​Z''​ (majusculă). Pentru a selecta studenții al cărore nume conține atât litera ''​z''​cât și ''​Z''​ (majusculă) folosim expresia regulată ''​%%[zZ]%%''​ și comanda
 <code bash> <code bash>
 student@uso:​~/​uso-lab/​labs/​06-scripting/​support/​00-basics$ grep '​[zZ]'​ students.txt ​ student@uso:​~/​uso-lab/​labs/​06-scripting/​support/​00-basics$ grep '​[zZ]'​ students.txt ​
Line 91: Line 91:
 </​code>​ </​code>​
  
-Dacă vrem în schimb să selectăm studenții al căror prenume începe cu litera ''​F''​ trebuie să privim lucrurile altfel. Urmărind textul putem observa că prenumele sunt precedate fie de caracterul spațiu (//blank//) fie de caracterul minus (''​-''​). Pentru început vom folosi expresia regulată ''​%%[ -]F%%''​ care face match pe caracterul spațiu sau minus urmat de caracterul ''​F''​ majusculă. Comanda aferentă este:+Dacă vremîn schimbsă selectăm studenții al căror prenume începe cu litera ''​F''​ trebuie să privim lucrurile altfel. Urmărind textul putem observa că prenumele sunt precedate fie de caracterul spațiu (//blank//) fie de caracterul minus (''​-''​). Pentru început vom folosi expresia regulată ''​%%[ -]F%%''​ care face match pe caracterul spațiu sau minus urmat de caracterul ''​F''​ majusculă. Comanda aferentă este:
 <code bash> <code bash>
 student@uso:​~/​uso-lab/​labs/​06-scripting/​support/​00-basics$ grep '[ -]F' students.txt ​ student@uso:​~/​uso-lab/​labs/​06-scripting/​support/​00-basics$ grep '[ -]F' students.txt ​
Line 133: Line 133:
  
 Utilitarul **tr** permite translatarea,​ ștergerea și manipularea caracterelor primite la intrare.  ​ Utilitarul **tr** permite translatarea,​ ștergerea și manipularea caracterelor primite la intrare.  ​
-După cum am văzut în [[:​uso:​laboratoare:​laborator-05|laboratorul precedent]], **sed** este un **stream editor** ce poate efectua transformări la nivel de string asupra unui text primit la intrare. În plus, sed poate primi expresii regulate ca argument de căutare. ​+Practic, **sed** este un **stream editor** ce poate efectua transformări la nivel de string asupra unui text primit la intrare. În plus, sed poate primi expresii regulate ca argument de căutare. ​
   ​   ​
 <​note> ​ <​note> ​
Line 247: Line 247:
 </​code>​ </​code>​
  
-În cazul în care există linii duplicate, putem folosi utilitarul **uniq** în conjuncție cu **sort** pentru a le elimina. În acest scop adăugăm o linie duplicata în ''​students.csv'': ​+În cazul în care există linii duplicate, putem folosi utilitarul **uniq** în conjuncție cu **sort** pentru a le elimina. În acest scopadăugăm o linie duplicata în ''​students.csv'': ​
 <​file>​ <​file>​
 VLĂDUȚU I. Liviu-Alexandru,​311CC,​6,​3.5,​5.22 ​                                                                                                                                                       VLĂDUȚU I. Liviu-Alexandru,​311CC,​6,​3.5,​5.22 ​                                                                                                                                                      
Line 364: Line 364:
 </​spoiler>​ </​spoiler>​
  
-Pașii de mai sus puteau fi realizați și cu ajutorul comenzii ''​cut''​. Darîn cazul parsării folosind construcția ''​while read''​ avem două avantaje:+Pașii de mai sus puteau fi realizați și cu ajutorul comenzii ''​cut''​. Dar în cazul parsării folosind construcția ''​while read''​ avem două avantaje:
   * putem afișa coloanele în ce ordine dorim; ''​cut''​ permitea afișarea de coloane doar în ordinea din fișierul de intrare;   * putem afișa coloanele în ce ordine dorim; ''​cut''​ permitea afișarea de coloane doar în ordinea din fișierul de intrare;
   * putem prelucra în continuare, în cadrul construcției ''​while read''​ informația parsată. Spre exemplu, afișarea poate avea forma %%"​Studentul ... face parte din grupa ..."​%%.   * putem prelucra în continuare, în cadrul construcției ''​while read''​ informația parsată. Spre exemplu, afișarea poate avea forma %%"​Studentul ... face parte din grupa ..."​%%.
uso/laboratoare/laborator-08/basics.1633369426.txt.gz · Last modified: 2021/11/14 11:46 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0