Pagina 1 di 3
Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 0:11
da freax
salve gente , grep , egrep e fgrep supportano le espressioni regolari ? dovrebbero giusto ? almeno uno di questi 3 comandi dovrebbe ?
la mia esigenza nasce dall'avere una pagina web e dal fatto che devo tirarne fuori i link che contiene o link con contenuto specifico come domini , nomi , etc etc , ok fin qui ?
salvo la pagina per fare una prova in locale e testo la regex che non ne vuole sapere di andare ne con grep , ne con egrep , ne con fgrep , ne con una pipe ( con cat pagina.html ad esempio )
ho letto che alcune distro hanno un buon supporto alle regex altre meno , addirittura ci sarebbe differenza sull'escape dei caratteri , il bello è che tutto questo l'ho racimolato e messo insieme da post di mezza riga quindi non proprio documentati alla perfezione : qualcuno mi illumina sulle regex e sulla bash di Slackware 13 ? Documentazione sulla sintassi ?
Re: Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 0:26
da d4z_c0nf
Le regexp funzionano, magari se ci fai "lavorare" su un esempio risolviamo prima.
rock
Re: Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 0:30
da freax
d4z_c0nf ha scritto:Le regexp funzionano, magari se ci fai "lavorare" su un esempio risolviamo prima.
rock
ecco una bella mezza notizia , l'altra mezza è : come ?
ovviamente quando dalla shell esamino una pagina web il codice html non viene interpretato quindi io vedo il sorgente della pagina , ok ? ecco una regex che ad esempio mi trova tutti i link di megaupload
Codice: Seleziona tutto
http://www\.megaupload\.com/.{0,3}\?d=[a-zA-Z0-9]{8}
provata sul desktop e va , perché da console no ?
Re: Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 0:39
da d4z_c0nf
freax ha scritto:d4z_c0nf ha scritto:Le regexp funzionano, magari se ci fai "lavorare" su un esempio risolviamo prima.
rock
ecco una bella mezza notizia , l'altra mezza è : come ?
ovviamente quando dalla shell esamino una pagina web il codice html non viene interpretato quindi io vedo il sorgente della pagina , ok ? ecco una regex che ad esempio mi trova tutti i link di megaupload
Codice: Seleziona tutto
http://www\.megaupload\.com/.{0,3}\?d=[a-zA-Z0-9]{8}
provata sul desktop e va , perché da console no ?
In pratica tu vuoi matchare tutti i link di quel tipo presenti in una o più pagine web giusto?
Re: Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 0:45
da freax
d4z_c0nf ha scritto:freax ha scritto:d4z_c0nf ha scritto:Le regexp funzionano, magari se ci fai "lavorare" su un esempio risolviamo prima.
rock
ecco una bella mezza notizia , l'altra mezza è : come ?
ovviamente quando dalla shell esamino una pagina web il codice html non viene interpretato quindi io vedo il sorgente della pagina , ok ? ecco una regex che ad esempio mi trova tutti i link di megaupload
Codice: Seleziona tutto
http://www\.megaupload\.com/.{0,3}\?d=[a-zA-Z0-9]{8}
provata sul desktop e va , perché da console no ?
In pratica tu vuoi matchare tutti i link di quel tipo presenti in una o più pagine web giusto?
yes , però volevo cogliere l'occasione per rispolverare le regex , comunque si , il succo è quello anche se dopo la regex veniva la parte nella quale controllavo se ci fossero doppioni nell'output visto che a volte sia il link alla pagina sia il nome del link hanno la forma
http://www.etcetc.it
Re: Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 0:50
da d4z_c0nf
Non ho capito bene poi il fatto della prova sul desktop..
In ogni caso ho fatto questa prova:
Ho un file pippo.htm:
Codice: Seleziona tutto
http://www.megaupload.com/?d=R37IFLY1
dffhttp://www.megaupload.com/?d=R37IFLY2
gfdlgk http://www.megaupload.com/?d=R37IFLY3
fdsaf
http://www.megaupload.com/?d=R37IFLY4
Scusa la rozzezza ma è per velocità.
Do il comando:
Codice: Seleziona tutto
egrep -o 'http://www\.megaupload\.com/.{0,3}\?d=[a-zA-Z0-9]{8}' ./pippo.html
e il risultato è coerentemente:
Codice: Seleziona tutto
http://www.megaupload.com/?d=R37IFLY1
http://www.megaupload.com/?d=R37IFLY2
http://www.megaupload.com/?d=R37IFLY3
http://www.megaupload.com/?d=R37IFLY4
Re: Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 0:52
da d4z_c0nf
freax ha scritto:[
yes , però volevo cogliere l'occasione per rispolverare le regex , comunque si , il succo è quello anche se dopo la regex veniva la parte nella quale controllavo se ci fossero doppioni nell'output visto che a volte sia il link alla pagina sia il nome del link hanno la forma
http://www.etcetc.it
Ma le regex le usi correttamente in quella stringa.
Forse usavi male i comandi. Per questo dovresti leggerti un po' i man o gl'help.
rock
Re: Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 1:20
da freax
d4z_c0nf ha scritto:freax ha scritto:[
yes , però volevo cogliere l'occasione per rispolverare le regex , comunque si , il succo è quello anche se dopo la regex veniva la parte nella quale controllavo se ci fossero doppioni nell'output visto che a volte sia il link alla pagina sia il nome del link hanno la forma
http://www.etcetc.it
Ma le regex le usi correttamente in quella stringa.
Forse usavi male i comandi. Per questo dovresti leggerti un po' i man o gl'help.
rock
ok perfetto , tra grep -E come egrep ho fatto un bel po di casino ... qualche idea su come togliere i duplicati ? l'ordine dell'elenco deve rimanere invariato .
Re: Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 8:29
da ulisse89
Comunque ricordo di aver ricompilato il programma "urlview" che fa proprio al caso tuo. Estrae gli URL dai file. E' un peccato che sia scritto in C e quindi non possa darti un esempio di come potevi usare *grep.

Re: Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 8:54
da freax
ulisse89 ha scritto:Comunque ricordo di aver ricompilato il programma "urlview" che fa proprio al caso tuo. Estrae gli URL dai file. E' un peccato che sia scritto in C e quindi non possa darti un esempio di come potevi usare *grep.

quella parte del lavoro è andata comunque , ah se questo urlview avesse avuto il controllo sui duplicati .
devo risolvere questa cosa dei link duplicati anche se la cosa più rapida rimane il salvataggio tramite un frontend web e da li incollo il testo o lo controllo a manina ...

Re: Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 9:28
da raffaele181188
Ma tu per duplicati ora cosa intendi? Se intendi che alcune stringhe vengono matchate più volte, beh, allora devi modificare il comando e passare delle opzioni a seconda del caso. Se invece intendi eliminare tutte le istanze di un URL che si ripetono in un documento meno una, allora sei costretto a usare un linguaggio di programmazione, e io ti consiglio un linguaggio di alto livello con supporto ai contenitori senza duplicati (io conosco Java e Python per questo scopo)
Offtopic: Per ricevere un aiuto buono e rapido, l'approccio migliore è senza dubbio spiegare tutto, per bene, e nel primo post 
Re: Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 10:19
da 414N
Per rimuovere i duplicati da un file (intendo righe uguali) si usa uniq, in combinazione con sort (le righe duplicate devono essere adiacenti):
Re: Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 10:29
da raffaele181188
414N ha scritto:
cat file | sort | uniq
Buono a sapersi

Re: Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 12:18
da ZeD
raffaele181188 ha scritto:414N ha scritto:
cat file | sort | uniq
Buono a sapersi

per la cronaca,
è più che sufficiente

Re: Espressioni regolari con la bash/shell molto ... irregolari
Inviato: sab 7 nov 2009, 15:16
da 414N
ZeD ha scritto:raffaele181188 ha scritto:414N ha scritto:
cat file | sort | uniq
Buono a sapersi

per la cronaca,
è più che sufficiente

Maial, è vero! Grazie
