Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
• Perchè ?
Regexp con sintassi estesa (extended regexp)
• Le regexp come sopra descritte sono utilizzate da molti
programmi: grep, vi, more, less, sed, ..
• Alcuni programmi (egrep, awk, ...) utilizzano alcune comode
estensioni della sintassi:
? indica 0 o una istanza di ciò che precede
+ indica una o piu' istanze di ciò che precede
(pat1|pat2) indica l’or tra due pattern
• Giusto per compensare, le extended regexp non hanno la sintassi
\< \> per le parole isolate
Esempi vari per divertirsi
• Month Day, Year (JAN 05, 2003) o (January 05, 2004)
[A-Z][A-Za-z]\{2,8\} [0-9] \{1,2\}, [0-9] \{4\}
tr -s setchar1
Elimina tutte le ripetizioni dei caratteri inclusi nel setchar1
sostituendole con una loro istanza singola
Esempio:
tr -s " " per eliminare gli spazi ripetuti
Comando cut
• Il comando cut serve a selezionare una parte di ogni riga di un
flusso di testo e a inviarla sullo standard output
• Le righe si considerano suddivise in fields separati da tab o da
altro separatore specificato con l’opzione -d
• L’opzione -f serve a specificare quali fields (uno o un range)
devono essere riprodotti sullo standard output
• Esempi:
who | cut -d" " -f1
visualizza solo i nomi degli utenti attualmente collegati
ps | tr -s " "|cut -d" " -f2
visualizza solo la colonna dei PID correnti
ps | tr -s " "|cut -d" " -f4-5 | sed 1d
visualizza solo le colonne TIME e CMD senza l’intestazione
No comment
• Scrivere uno script di shell che serve ad eliminare le righe vuote e
i commenti da un altro script di shell inviando in output solo le
parti “utili”:
- si definisce riga vuota una riga che contiene solo spazi o nessun
carattere (facoltativamente e SUCCESSIVAMENTE considerare
anche il caso in cui si considerino anche caratteri tab)
- le righe interamente commentate vanno eliminate
- delle righe commentate parzialmente si deve mantenere la parte
che precede il primo carattere # a meno che non sia costituita
interamente da caratteri spazio (e facoltativamente tab)