Differences

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

Link to this comparison view

uso:laboratoare:new:06-auto:basics [2019/11/07 10:01]
adrian.zatreanu [Expresii regulate]
uso:laboratoare:new:06-auto:basics [2019/11/12 08:11] (current)
maria.mihailescu [Expresii regulate] Fix regex
Line 102: Line 102:
 CHIȚESCU E. Bogdan-Florentin 315CC 9 7.75 6.89 CHIȚESCU E. Bogdan-Florentin 315CC 9 7.75 6.89
 </​code>​ </​code>​
-Observăm, însă, că se face match și pe șirul ''​Fl.''​ și pe șirul ''​F.''​ reprezentând inițiale. Știm că un prenume conține doar litere mici și că **nu** se încheie cu punct (''​.'',​ //dot//). Atunci extindem expresia regulată de mai sus la expresia ''​%%[ -]F[a-z]+[^\.]%%''​. Expresia regulată face match pe un șir care:+Observăm, însă, că se face match și pe șirul ''​Fl.''​ și pe șirul ''​F.''​ reprezentând inițiale. Știm că un prenume conține doar litere mici și că **nu** se încheie cu punct (''​.'',​ //dot//). Atunci extindem expresia regulată de mai sus la expresia ''​%%[ -]F[a-z]\+[^\.]%%''​. Expresia regulată face match pe un șir care:
   * începe cu unul dintre caracterele spațiu (//blank//) sau minus (''​-''​);​   * începe cu unul dintre caracterele spațiu (//blank//) sau minus (''​-''​);​
   * continuă cu litera ''​F''​ (majusculă)   * continuă cu litera ''​F''​ (majusculă)
Line 205: Line 205:
 Kernel Interface ​ Kernel Interface ​
 Iface MTU RX-OK Iface MTU RX-OK
-eth0 1500 2029+eth0 1500 1955
 lo 65536 359 lo 65536 359
 </​code>​ </​code>​
Line 332: Line 332:
    
 === Constructia while read === === Constructia while read ===
 +
 +Creați un nou script ​ ''​extract-name''​ cu conținutul de mai jos:
 +<file Bash>
 +#!/bin/bash
 +
 +IFS=','​
 +while read name group final_grade test_grade practical_grade;​ do
 +    echo "​$name"​
 +done < students.csv
 +</​file>​
  
 Pentru parsare în shell folosim construcția ''​%%while read ...%%''​. Construcția este urmată de numele variabilelor în care vom reține câmpurile parsate din cadrul fiecărei linii. Folosim la intrare fișierul ''​students.csv''​ aflat în directorul părinte; este un fișier în format CSV (//Comma Separated Values//) folosind ca separator caracterul virgulă ('','',​ //comma//). Pentru a extrage doar numele studenților din fișierul de intrare vom rula scriptul ''​extract-name'':<​code>​ Pentru parsare în shell folosim construcția ''​%%while read ...%%''​. Construcția este urmată de numele variabilelor în care vom reține câmpurile parsate din cadrul fiecărei linii. Folosim la intrare fișierul ''​students.csv''​ aflat în directorul părinte; este un fișier în format CSV (//Comma Separated Values//) folosind ca separator caracterul virgulă ('','',​ //comma//). Pentru a extrage doar numele studenților din fișierul de intrare vom rula scriptul ''​extract-name'':<​code>​
Line 353: Line 363:
 Informații și pe [[http://​en.wikipedia.org/​wiki/​Internal_field_separator|Wikipedia]]. Informații și pe [[http://​en.wikipedia.org/​wiki/​Internal_field_separator|Wikipedia]].
 </​spoiler>​ </​spoiler>​
- 
-Să extindem scriptul pentru a afișa și numele și grupa. Conținutul noului script va fi: 
-<file Bash> 
-#!/bin/bash 
- 
-IFS=','​ 
-while read name group final_grade test_grade practical_grade;​ do 
-    echo "​$name,​$group"​ 
-done < students.csv 
-</​file>​ 
  
 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:
uso/laboratoare/new/06-auto/basics.1573113679.txt.gz · Last modified: 2019/11/07 10:01 by adrian.zatreanu
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