Ambienti Operativi: Espressioni Regolari 2



Похожие документы
Shell Espressioni regolari

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Convertitori numerici in Excel

FastPRESS WEB. In questa schermata è possibile scegliere il tipo di consultazione che si desidera effettuare.

4 3 4 = 4 x x x 10 0 aaa

Versione 7.0 Taglie e Colori. Negozio Facile

STAMPA UNIONE DI WORD

Tutte le interrogazioni possono essere condotte su qualsiasi campo della banca dati (ad esempio, Forma, Frequenza, Lunghezza, ecc...).

Test Excel conoscenze di Base

Funzioni in C. Violetta Lonati

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Punto Print Il programma per stampare. Documentazione Tecnica

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

Calcolare il massimo di una lista

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

I file di dati. Unità didattica D1 1

Editor vi. Editor vi

Strutturazione logica dei dati: i file

RISOLUTORE AUTOMATICO PER SUDOKU

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

L utility Unix awk [Aho-Weinberger-Kernighan]

Excel avanzato. I nomi. Gli indirizzi e le formule possono essere sostituiti da nomi. Si creano tramite Inserisci Nome Definisci

Il programma CONFELMOD CAD creazione e modifica

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Figura 1 Le Icone dei file di Excel con e senza macro.

Realizzare la planimetria dell ufficio con Visio 2003

Esercizio data base "Biblioteca"

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Costruzione del layout in gino cms

3.6 Preparazione stampa

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

Modulo 3 - Elaborazione Testi 3.5 Stampa unione

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

8.9 CREARE UNA TABELLA PIVOT

NOZIONI BASE SHELL E SCRIPT LINUX

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

I FILTRI SED, GREP (e AWK) Tratto da SED

Le query. Lezione 6 a cura di Maria Novella Mosciatti

1) Le Espressioni regolari

UTILIZZO DEL MODULO DATA ENTRY PER L IMPORTAZIONE DEI DOCUMENTI (CICLO PASSIVO)

Il foglio elettronico. Excel PARTE

Modulo 3 - Elaborazione Testi 3.6 Preparazione stampa

M:\Manuali\VARIE\GENERAZIONE REPORT PARAMETRICI.doc GENERAZIONE REPORT PARAMETRICI

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

Corso di Informatica. Immissione di dati. Visualizzazione come foglio dati 1. Visualizzazione come foglio dati 2 11/01/2008

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

COME DEFINIRE DELLE DOWNLOAD RULES CON VPOP3

EXCEL FUNZIONI PRINCIPALI

PROMOZIONI ISTRUZIONI DI UTILIZZO

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

1.0 GUIDA PER L UTENTE

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Corso di Fondamenti di Informatica

1 CARICAMENTO LOTTI ED ESISTENZE AD INIZIO ESERCIZIO

LINGUAGGI DI PROGRAMMAZIONE

Definire gli attributi dei blocchi

Sebina OpenLibrary v Rev. 0 del Pag. 1 di 6

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

Logistica magazzino: Inventari

La posta elettronica (mail)

Corso sul linguaggio SQL

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

MANUALE PER LA GESTIONE DELLE ADOZIONI 2009/10

Introduzione al Linguaggio C

Olga Scotti. Basi di Informatica. Excel

Metodi Stocastici per la Finanza

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

<?php include './include/page.php';

CREAZIONE ARCHIVI 2014

Pagina 1 di 10

Invio SMS. DM Board ICS Invio SMS

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

STAMPA DI UNA PAGINA SEMPLICE

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel

Logaritmi ed esponenziali

ARCHIVIAZIONE DOCUMENTI

La Stampa Unione. Individuare la lista indirizzi per la Stampa Unione

Programmazione dinamica

VISO - OPERE PARAMASSI (Versione Access)

PROGRAMMA SVOLTO NELLA SESSIONE N.

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Il personale docente e la segreteria didattica per effettuare la gestione degli scrutini dovranno eseguire semplici operazioni.

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

5.3 TABELLE RECORD Inserire, eliminare record in una tabella Aggiungere record Eliminare record

Stampa unione - prof. Enzo Mardegan - 2

MySQL Database Management System

Olga Scotti. Basi di Informatica. File e cartelle

LA RICLASSIFICAZIONE DEI SALDI CONTABILI CON MICROSOFT ACCESS 2007

WORD 97 SCRIVERE UNA TESI DI LAUREA

Uso delle basi di dati. Informazione e dato. Cos è un database. Tabelle. Esempi di database

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

Транскрипт:

DTI / ISIN / Titolo principale della presentazione 1 Ambienti Operativi: Espressioni Regolari 2 Amos Brocco, Ricercatore, DTI / ISIN

2 grep grep può filtrare le righe in input in base a un'espressione regolare Se viene trovato almeno una corrispondenza, la linea viene stampata Noi utilizzeremo grep con l'opzione -E (extended regular expression) che supporta i quantificatori?, +, {n}, {n,m}, e {n,} (senza l'escaping) Le espressioni regolari devono, di norma, essere inserite tra apici semplici o doppi: Se vogliamo che Bash esegua l'espansione delle variabili all'interno dell'espressione regolare usiamo i doppi apici (virgolette) Altrimenti solo ' ' utente@host:~$ grep -E "\bmani\b" testo.txt utente@host:~$ grep -E "\bl[aei]\b" testo.txt Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar le utente@host:~$ grep "l\{2,3\}" testo.txt utente@host:~$ grep -E "l{2,3}" testo.txt

3 Caratteri speciali, escaping: grep vs. grep -E grep grep -E x\+ x+ x\? x? a\ b a b \(gruppo\) (gruppo) \{m\} {m} \{m,\} {m,} \{,n\} {,n} \{m,n\} {m,n}

4 Un nuovo problema... Cerco la parola mani... gomiti sulle sue ginocchia e con la faccia appoggiata tra le mani, stavo a sentire. Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar le fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi, ma domani possiamo esser poveri. E non si misero in cammino a mani vuote....e voglio sostituirla con piedi

5 Come funziona sed L'editing avviene attraverso delle espressioni che contengono i comandi per sed L'input viene letto riga per riga I comandi sono eseguiti su tutte le righe (se non è indicato un indirizzo specifico) Se sono presenti più comandi, il risultato di ogni espressione viene passato come input al comando successivo Input Riga corrente Espressione L'input non viene modificato Output

6 Sintassi di sed La sintassi del comando sed è sed [opzioni] -e 'espressione' inputfile L'espressione indica il comando di manipolazione del testo da eseguire Posso avere più espressioni Se non viene specificato un file di input, sed legge da stdin

7 Escaping nelle espressioni regolari in sed grep grep -E sed x\+ x+ x\+ x\? x? x\? a\ b a b a\ b \(gruppo\) (gruppo) \(gruppo\) \{m\} {m} \{m\} \{m,\} {m,} \{m,\} \{,n\} {,n} \{,n\} \{m,n\} {m,n} \{m,n\}

8 Esempio: sostituzione (s///) Il comando s/// mi permette di sostituire un termine (un'espressione regolare) con un'altro Esempio: utente@host:~$ sed -e 's/\bmani\b/piedi/' testo.txt gomiti sulle sue ginocchia e con la faccia appoggiata tra le piedi, stavo a sentire. Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar le fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi, ma domani possiamo esser poveri. E non si misero in cammino a piedi vuote. s / trova / sostituisci / g Opzionale, permette di effettuare una sostituzione di tutte le corrispondenze di 'trova' nella linea corrente (e non solo la prima occorrenza)

9 Sostituzione globale o no? utente@host:~$ sed -e 's/le/le/' testo.txt Il 16 febbraio del 1951, sedevo su un panchettino di LEgno, ai suoi piedi, puntavo i gomiti sulle sue ginocchia e con la faccia appoggiata tra le mani, stavo a sentire. Gli Egiziani trasmisero ai Romani LE preparazioni che permettevano di trasformar le fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi, utente@host:~$ sed -e 's/le/le/g' testo.txt Il 16 febbraio del 1951, sedevo su un panchettino di LEgno, ai suoi piedi, puntavo i gomiti sulle sue ginocchia e con la faccia appoggiata tra LE mani, stavo a sentire. Gli Egiziani trasmisero ai Romani LE preparazioni che permettevano di trasformar LE fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi,

10 Limitare l'esecuzione di un comando solo a certe righe indirizzo comando riga, da a /regex/ /daregex/ da /daregex/ /regex/,,,,+ /aregex/ /aregex/ a N Il comando viene applicato solo alla riga con indice corrispondente Il comando viene applicato solo nell'intervallo specificato Il comando viene applicato solo alle righe che contengono un match per l'espressione regolare Il comando viene applicato solo alle righe a partire dal match della prima espressione regolare, fino alla riga che contiene un match per la seconda espressione regolare Il comando viene applicato solo alle righe a partire da un indice specificato, fino alla riga che contiene un match per la seconda espressione regolare Il comando viene applicato solo alle righe a partire dal match della prima espressione regolare, fino alla riga con indice specificato Il comando viene applicato solo alle righe con match più le N righe successive

11 Esempio: stampa di una linea con 'p' Il comando p mi permette di stampare una riga (o più righe) Stampa le righe da 1 a 3 utente@host:~$ sed -n -e '1,3p' testo.txt Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar le Con l'opzione -n evitiamo che sed stampi le righe, se non esplicitamente richiesto (con il comando 'p') utente@host:~$ sed -n -e '/ faccia/ p' testo.txt utente@host:~$ sed -n -e '1,/Romani/ p' testo.txt Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar le utente@host:~$ sed -n -e '/ Romani/, +1 p' testo.txt Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar le fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi,

12 Esempio: cancellazione di una linea con 'd' Il comando d mi permette di cancellare una riga (o più righe) Le righe non vengono cancellate dal file di input, semplicemente non appariranno nell'output utente@host:~$ sed -e '/ faccia/ d' testo.txt Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar le fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi, utente@host:~$ sed -e '4,5d' testo.txt Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar le utente@host:~$ sed -e '/ Egiziani/, +1d' testo.txt

13 Sostituire solo in alcune righe Sostituisce 'le' con 'LE' solo nella seconda riga utente@host:~$ sed -e '2s/le/LE/g' testo.txt gomiti sulle sue ginocchia e con la faccia appoggiata tra LE mani, stavo a sentire. Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar le fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi, utente@host:~$ sed -e '/\bc\ w\w\b/ s/a/e/g' testo.txt gomiti sulle sue ginocchie e con le feccie eppoggiete tre le meni, stevo e sentire. Gli Egizieni tresmisero ei Romeni le preperezioni che permetteveno di tresformer le fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi, Sostituisce 'a' con 'e' solo nelle righe in cui ci sono parole di tre lettere che cominciano con 'c'

14 Sostituzione tra un gruppo di caratteri Con il comando y è possibile effettuare sostituzioni tra due gruppi di caratteri (di lunghezza uguale), carattere per carattere utente@host:~$ sed -e 'y/sleo/5130/' testo.txt I1 16 f3bbrai0 d31 1951, 53d3v0 5u un panch3ttin0 di 13gn0, ai 5u0i pi3di, puntav0 i g0miti 5u113 5u3 gin0cchia 3 c0n 1a faccia app0ggiata tra 13 mani, 5tav0 a 53ntir3. G1i Egiziani tra5mi53r0 ai R0mani 13 pr3parazi0ni ch3 p3rm3tt3van0 di tra5f0rmar 13 fibr3 v3g3ta1i d31 papir0 in 5up3rfici pu1it3, bianch3, pi3gh3v01i. Oggi 5iam0 ricchi, ma d0mani p055iam0 3553r p0v3ri. E n0n 5i mi53r0 in cammin0 a mani vu0t3. y/sleo/5130/ I caratteri vengono sostituiti uniformemente

15 Più espressioni Posso eseguire più comandi specificando più parametri expression ( -e ) Per ogni riga (riga corrente), i comandi verranno eseguiti nell'ordine indicato utente@host:~$ sed -e '/\bc\w\w\b/s/a/e/g' -e '3,5s/o/u/' testo.txt gomiti sulle sue ginocchie e con le feccie eppoggiete tre le meni, stevo e sentire. Gli Egizieni tresmiseru ei Romeni le preperezioni che permetteveno di tresformer le fibre vegetali del papiru in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi, ma dumani possiamo esser poveri. E non si misero in cammino a mani vuote. Input /\bc\w\w\b/s/a/e/g 3,5s/o/u/ Riga corrente Riga corrente Riga corrente Output

16 Definire le espressioni in un file separato È possibile definire le espressioni da utilizzare in un file separato Utile se dobbiamo usare tante trasformazioni L'opzione -f mi permette di definire il file con le espressioni da utilizzare utente@host:~$ sed -f trasformazioni.sed testo.txt

17 Più comandi per gli stessi indirizzi È possibile raggruppare più comandi da eseguire sugli stessi indirizzi (nell'ordine indicato) utilizzando le parentesi graffe { } utente@host:~$ sed -f trasformazioni.sed testo.txt Il cifra:1cifra:6 febbreio del cifra:1cifra:9cifra:5cifra:1, sedevo su un penchettino di legno, ei suoi piedi, puntevo i gomiti sulle sue ginocchie e con le feccie eppoggiete tre le meni, stevo e sentire. Gli Egizieni tresmisero ei Romeni le preperezioni che permetteveno di tresformer le fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi, Dove 'trasformazioni.sed' contiene: 1,3 { s/a/e/g s/[0-9]/cifra:&/g }

18 Inserire una riga prima di ogni riga Il comando i\ mi permette di inserire una riga (o più righe) prima di ogni riga Ogni riga aggiuntiva termina con \ (backslash) utente@host:~$ sed -f trasformazioni.sed testo.txt Riga aggiunta Altra riga Riga aggiunta Altra riga Riga aggiunta Altra riga Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar le fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi, Dove 'trasformazioni.sed' contiene: 1,3 { } i\ Riga aggiunta \ Altra riga

19 Inserire una riga dopo di ogni riga Il comando a\ mi permette di aggiungere una riga (o più righe) dopo di ogni riga Ogni riga aggiuntiva termina con \ (backslash) utente@host:~$ sed -f trasformazioni.sed testo.txt Riga aggiunta Altra riga Riga aggiunta Altra riga Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar le Riga aggiunta Altra riga fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi, Dove 'trasformazioni.sed' contiene: 1,3 { } a\ Riga aggiunta \ Altra riga

20 Riprendere la corrispondenza dell'espressione regolare Con & posso riprendere il valore dell'espressione regolare utilizzata nel campo 'trova' del comando di sostituzione 's' utente@host:~$ sed -e 's/.*/linea: &/g' testo.txt Linea: Linea: Linea: Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar le Linea: fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi, Linea: utente@host:~$ sed -e 's/l./ -- & -- /g' testo.txt I -- l -- 16 febbraio de -- l -- 1951, sedevo su un panchettino di -- le -- gno, ai suoi piedi, puntavo i gomiti su -- ll -- e sue ginocchia e con -- la -- faccia appoggiata tra -- le -- mani, stavo a sentire. G -- li -- Egiziani trasmisero ai Romani -- le -- preparazioni che permettevano di trasformar -- le -- fibre vegeta -- li -- de -- l -- papiro in superfici pu -- li -- te, bianche, pieghevo -- li --. Oggi siamo ricchi,

21 Back-reference Posso referenziare i gruppi utilizzati nel campo 'trova' del comando di sostituzione 's' nel campo 'sostituisci' con la notazione \N dove N è il gruppo da referenziare utente@host:~$ sed -e 's/\(\w\)\(\w\)/\2\1/g' testo.txt li 61 efbbaroi edl 9115, esedov us nu apcnehttnio id elngo, ia usio ipdei, uptnvao i ogimit uslle use igoncciha e ocn al afccai paopggaiat rta el amin, tsvao a estnrie. lgi geziaiin rtsaimesor ia oramin el rpperazaoiin hce epmrteetavon id rtsaofmrra el ifrbe evegatil edl apipor ni usepfrcii upilet, ibnahce, ipgeehovil. goig ismao irccih, am odamin opssaiom seesr opevir. E onn is imesor ni acmmnio a amin uvtoe. L'ordine di tutte le sequenze di due caratteri alfanumerici è invertito

22 Stampare i numeri di linea Il comando = mi permette di stampare i numeri di linea utente@host:~$ sed -e '=' testo.txt 1 2 3 Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar le 4 fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi, 5

23 Concatenare più righe utente@host:~$ sed -e 's/le fibre/le FIBRE/g' testo.txt Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar le fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi, Non funziona perché sed lavora su una riga per volta!

24 Concatenare più righe Con il comando N posso concatenare due righe consecutive Attenzione! La riga corrente conterrà il carattere \n in corrispondenza della fine della prima riga Con un'espressione regolare appropriata posso individuare il pattern desiderato utente@host:~$ sed -e 'N' -e 's/le\s* fibre/le FIBRE/g' testo.txt Gli Egiziani trasmisero ai Romani le preparazioni che permettevano di trasformar LE FIBRE vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi,

25 Indirizzo inverso Se aggiungo! all'indirizzo posso invertire le corrispondenze utente@host:~$ sed -n -e '/le/! p' testo.txt fibre vegetali del papiro in superfici pulite, bianche, pieghevoli. Oggi siamo ricchi, Stampa le righe che non contengono 'le' utente@host:~$ sed -n -e '/gomiti/,/ bianche/! p' testo.txt Stampa le righe che non sono nell'intervallo specificato

26 Delimitatori "custom" Invece di / è possibile utilizzare, nelle sostituzioni, un qualsiasi carattere delimitatore utile per non dover fare l'escape ogni volta se il delimitatore appare nell'espressione utente@host:~$ sed -e 's/c/a/ g' testo.txt Il 16 febbraio del 1951, sedevo su un panahettino di legno, ai suoi piedi, puntavo i gomiti sulle sue ginoaahia e aon la faaaia appoggiata tra le mani, stavo a sentire. Gli Egiziani trasmisero ai Romani le preparazioni ahe permettevano di trasformar le fibre vegetali del papiro in superfiai pulite, bianahe, pieghevoli. Oggi siamo riaahi, ma domani possiamo esser poveri. E non si misero in aammino a mani vuote. utente@host:~$ sed -e 's@c@a@ g' testo.txt Il 16 febbraio del 1951, sedevo su un panahettino di legno, ai suoi piedi, puntavo i gomiti sulle sue ginoaahia e aon la faaaia appoggiata tra le mani, stavo a sentire. Gli Egiziani trasmisero ai Romani le preparazioni ahe permettevano di trasformar le fibre vegetali del papiro in superfiai pulite, bianahe, pieghevoli. Oggi siamo riaahi, ma domani possiamo esser poveri. E non si misero in aammino a mani vuote. utente@host:~$ sed -e 'siciaig' testo.txt Il 16 febbraio del 1951, sedevo su un panahettino di legno, ai suoi piedi, puntavo i gomiti sulle sue ginoaahia e aon la faaaia appoggiata tra le mani, stavo a sentire. Gli Egiziani trasmisero ai Romani le preparazioni ahe permettevano di trasformar le fibre vegetali del papiro in superfiai pulite, bianahe, pieghevoli. Oggi siamo riaahi, ma domani possiamo esser poveri. E non si misero in aammino a mani vuote.