da circa 3 ore sto giocando con un'espressione regolare per riuscire ad estrarre il nome del programma dal nome completo del pacchetto...
mi spiego meglio, ho uno script che legge il file FILELIST.txt (ad esempio quello che trovate nel repository di slacky) e in base ad una stringa passatagli come argomento effettua una ricerca, il tutto è abbastanza semplice, solo che mi restituisce il pacchetto con tutto il percorso in questo modo:
Codice: Seleziona tutto
$ ./findpkg mozilla
./multimedia/gnash/0.8.2/gnash-mozilla-plugin-0.8.2-i686-1as.tgz
./multimedia/vlc/0.8.6f/vlc-mozilla-plugin-0.8.6f-i686-1as.tgz
./network/firefox/2.0.0.14/en-us/mozilla-firefox-en-us-2.0.0.14-i686-1sl.tgz
./network/firefox/2.0.0.14/it/mozilla-firefox-it-2.0.0.14-i686-1sl.tgz
./network/thunderbird/2.0.0.14/en-us/mozilla-thunderbird-en-us-2.0.0.14-i686-1sl.tgz
./network/thunderbird/2.0.0.14/it/mozilla-thunderbird-it-2.0.0.14-i686-1sl.tgz
Codice: Seleziona tutto
$ ./findpkg mozilla
gnash-mozilla-plugin
vlc-mozilla-plugin
mozilla-firefox-en-us
mozilla-firefox-it
mozilla-thunderbird-en-us
mozilla-thunderbird-it
Solo che non so come comportarmi perchè ci sono pacchetti che hanno il nome composto da una sola parola, ma ci sono pacchetti (come questi dell'esempio) che hanno il nome con varie parole separate da "-"...
con alcuni pacchetti ero giunto a questa RE:
Codice: Seleziona tutto
sed 's/-.*.tgz//g'Per gli esempi sopra però non funziona, perchè del pacchetto "./network/firefox/2.0.0.14/en-us/mozilla-firefox-en-us-2.0.0.14-i686-1sl.tgz" mi restituirebbe solo "./network/firefox/2.0.0.14/en" (relativo alla directory, non al nome del pacchetto...)
Un'altra cosa, usando sed in una pipe, fino a quando uso una sola RE posso fare
Codice: Seleziona tutto
bla bla bla | sed 'miaRegExp'Codice: Seleziona tutto
bla bla bla |sed 'miaRegExp' |sed 'altraRegExp'Spero saprete aiutarmi, grazie mille a tutti...
Ciau


