Espressioni regolari con la bash/shell molto ... irregolari

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
freax
Linux 1.x
Linux 1.x
Messaggi: 177
Iscritto il: lun 19 gen 2009, 0:29
Slackware: 13
Desktop: kde4

Espressioni regolari con la bash/shell molto ... irregolari

Messaggio 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 ?

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: Espressioni regolari con la bash/shell molto ... irregolari

Messaggio da d4z_c0nf »

Le regexp funzionano, magari se ci fai "lavorare" su un esempio risolviamo prima.

rock

Avatar utente
freax
Linux 1.x
Linux 1.x
Messaggi: 177
Iscritto il: lun 19 gen 2009, 0:29
Slackware: 13
Desktop: kde4

Re: Espressioni regolari con la bash/shell molto ... irregolari

Messaggio 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 ?

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: Espressioni regolari con la bash/shell molto ... irregolari

Messaggio 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?

Avatar utente
freax
Linux 1.x
Linux 1.x
Messaggi: 177
Iscritto il: lun 19 gen 2009, 0:29
Slackware: 13
Desktop: kde4

Re: Espressioni regolari con la bash/shell molto ... irregolari

Messaggio 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

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: Espressioni regolari con la bash/shell molto ... irregolari

Messaggio 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

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: Espressioni regolari con la bash/shell molto ... irregolari

Messaggio 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

Avatar utente
freax
Linux 1.x
Linux 1.x
Messaggi: 177
Iscritto il: lun 19 gen 2009, 0:29
Slackware: 13
Desktop: kde4

Re: Espressioni regolari con la bash/shell molto ... irregolari

Messaggio 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 .

Avatar utente
ulisse89
Packager
Packager
Messaggi: 643
Iscritto il: sab 17 gen 2009, 12:53
Nome Cognome: Riccardo
Slackware: 13.0
Kernel: 2.6.29.6
Desktop: Xfce
Località: Bologna

Re: Espressioni regolari con la bash/shell molto ... irregolari

Messaggio 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. :)

Avatar utente
freax
Linux 1.x
Linux 1.x
Messaggi: 177
Iscritto il: lun 19 gen 2009, 0:29
Slackware: 13
Desktop: kde4

Re: Espressioni regolari con la bash/shell molto ... irregolari

Messaggio 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 ... :?

Avatar utente
raffaele181188
Packager
Packager
Messaggi: 789
Iscritto il: ven 7 set 2007, 21:40
Nome Cognome: Raffaele
Slackware: current
Kernel: 2.6.29.6
Desktop: KDE 4.3
Distribuzione: Ubuntu
Località: DearSkin (FG)

Re: Espressioni regolari con la bash/shell molto ... irregolari

Messaggio 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 :D

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2924
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Espressioni regolari con la bash/shell molto ... irregolari

Messaggio 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):

Codice: Seleziona tutto

cat file | sort | uniq

Avatar utente
raffaele181188
Packager
Packager
Messaggi: 789
Iscritto il: ven 7 set 2007, 21:40
Nome Cognome: Raffaele
Slackware: current
Kernel: 2.6.29.6
Desktop: KDE 4.3
Distribuzione: Ubuntu
Località: DearSkin (FG)

Re: Espressioni regolari con la bash/shell molto ... irregolari

Messaggio da raffaele181188 »

414N ha scritto: cat file | sort | uniq
Buono a sapersi :D

Avatar utente
ZeD
Linux 1.x
Linux 1.x
Messaggi: 112
Iscritto il: ven 28 ott 2005, 12:30
Slackware: 12.1
Località: Terra

Re: Espressioni regolari con la bash/shell molto ... irregolari

Messaggio da ZeD »

raffaele181188 ha scritto:
414N ha scritto: cat file | sort | uniq
Buono a sapersi :D
per la cronaca,

Codice: Seleziona tutto

sort -u file
è più che sufficiente :)

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2924
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Espressioni regolari con la bash/shell molto ... irregolari

Messaggio da 414N »

ZeD ha scritto:
raffaele181188 ha scritto:
414N ha scritto: cat file | sort | uniq
Buono a sapersi :D
per la cronaca,

Codice: Seleziona tutto

sort -u file
è più che sufficiente :)
Maial, è vero! Grazie :)

Rispondi