[BASH] Riconoscere nome completo da nome corto
Moderatore: Staff
Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
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.
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
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.
-
- Iper Master
- Messaggi: 3174
- Iscritto il: lun 3 set 2007, 21:20
- Nome Cognome: Mario Vanoni
- Slackware: 12.2
- Kernel: 3.0.4 statico
- Desktop: fluxbox/seamonkey
- Località: Cuasso al Monte (VA)
Re: [BASH] Riconoscere nome completo da nome corto
cd /var/log/packages
ls | grep '\w' | cut -d '-' -f 1
non vale per grep(1) non GNU
ls | grep '\w' | cut -d '-' -f 1
non vale per grep(1) non GNU
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: [BASH] Riconoscere nome completo da nome corto
in realtà i pacchetti Slackware non hanno il campo "autori", solo il numero finalePaoletta ha scritto: oppure assumere che i nomi degli autori siano contraddistinti da almeno 2 lettere (che di solito succede) e verrebbe:
quelli non Slackware (cioè quelli esterni) possono averlo, ma non esiste regola, ed il team non è che faccia proprio così, guarda i pacchetti di alien, di robby workman o di slackbuilds.org (alien, rlw, SBo) addirittura gli ultimi due con l'underscore prima dell'identificativo
-
- Packager
- Messaggi: 1339
- Iscritto il: sab 27 mar 2004, 0:00
- Slackware: current
- Desktop: fluxbox.git
- Località: Collegno, but made in Friûl
- Contatta:
Re: [BASH] Riconoscere nome completo da nome corto
Altrimenti, se vuoi trovare il nome del package, puoi usare questa stringa di sed:
Assume che i nomi dei file, le versioni e le revisioni contengano al più i caratteri "a-z", "A-Z", "." e "_". In pratica, elimina gli ultimi 3 campi preceduti dallo score.echo filename | sed "s/\(-[a-zA-Z0-9\._]\{1,\}\)\{3\}$//"
- d4z_c0nf
- 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: [BASH] Riconoscere nome completo da nome corto
Il gioco è fatto per fare cosa?414N ha scritto:Perché non sfruttare il nome del pacchetto contenuto nello slack-desc all'interno dello stesso?
È già pulito da tutti i fronzoli...
Un esempio;Dovrebbe restituire, a meno di "arruginitura eccessiva" sulla REGEXP, una riga tipo queste (tratte da obconf):Codice: Seleziona tutto
DIRTY_NAME=`tar xf package.tgz install/slack-desc -O | egrep '[:graph:]*: '`
Ricavate queste info, una filtrata con cut ed head ed il gioco è fatto:Codice: Seleziona tutto
obconf: obconf (Openbox configuration tool) obconf: ObConf is a graphical configuration tool for the Openbox obconf: window manager. obconf: obconf home: http://icculus.org/openbox/index.php/ObConf:About
Codice: Seleziona tutto
NAME=`tar xf package.tgz install/slack-desc -O | egrep '[:graph:]*: ' | cut -d: -f1 | head -n1`
Noi non sappiamo l'utilizzo che ne deve fare ulisse89. Magari hai ragione e vuole estrarre il nome del programma dal pacchetto, ma lui ha chiesto
Anche perchè se volesse ricavare il nome dell'applicazione, per come sono fatti i pacchetti slackware e il file desc, potrebbe ricavarlo direttamente dal nomefile.t*z visto che segue una specifica formula.ulisse89 ha scritto: Mi servirebbe sapere come fare, data una stringa, che rappresenta il nome di un pacchetto (di slackware), come riconoscere se è un nome completo ( xvidcore-1.2.2-i486-2sl) o corto ( xvidcore )
rock
- ulisse89
- 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: [BASH] Riconoscere nome completo da nome corto
Infatti conraid mi hai preceduto. Stavo per dirlo io. Non avevo specificato all'inzio che il pacchetto può essere "non ufficiale" ma anche "ufficiale", quindi con o senza le lettere finali. Per questo non ci si può basare su questo.
Comunque grazie a tutti ragazzi delle risposte.
Sto controllando ogni soluzione propostami, ci metto un po' perchè sto anche studiando le cose che non so. Per esempio l'esistenza del "+" non la sapevo.
Comunque grazie a tutti ragazzi delle risposte.
Sto controllando ogni soluzione propostami, ci metto un po' perchè sto anche studiando le cose che non so. Per esempio l'esistenza del "+" non la sapevo.
- ulisse89
- 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: [BASH] Riconoscere nome completo da nome corto
No non devo ricavarne il nome dell'applicazione. Tutt'altro.
Devo solo sapere se quello che mi è stato passato è un nome intero o troncato.
Specifico un po'. Ho una lista di file, in una directory /deps, ognuno dei quali ha come nome il nome di un pacchetto installato e come contenuto la lista delle sue dipendenze. Nomi e dipendenze sono in formato completo.
Il mio programma prende in input un nome di un pacchetto e cerca il file corrispondente in modo da dare in output le sue dipendenze.
Però non so se quello che mi è stato passato è un nome completo o troncato del pacchetto.
Mi serve saperlo perchè la ricerca del file sarà diversa a seconda di cosa mi è stato passato.
Devo solo sapere se quello che mi è stato passato è un nome intero o troncato.
Specifico un po'. Ho una lista di file, in una directory /deps, ognuno dei quali ha come nome il nome di un pacchetto installato e come contenuto la lista delle sue dipendenze. Nomi e dipendenze sono in formato completo.
Il mio programma prende in input un nome di un pacchetto e cerca il file corrispondente in modo da dare in output le sue dipendenze.
Però non so se quello che mi è stato passato è un nome completo o troncato del pacchetto.
Mi serve saperlo perchè la ricerca del file sarà diversa a seconda di cosa mi è stato passato.
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: [BASH] Riconoscere nome completo da nome corto
io farei un if per matchare con tre casi i?86 x86_64 e noarch seguiti da -[0-9].*$ulisse89 ha scritto:No non devo ricavarne il nome dell'applicazione. Tutt'altro.
Devo solo sapere se quello che mi è stato passato è un nome intero o troncato.
Specifico un po'. Ho una lista di file, in una directory /deps, ognuno dei quali ha come nome il nome di un pacchetto installato e come contenuto la lista delle sue dipendenze. Nomi e dipendenze sono in formato completo.
Il mio programma prende in input un nome di un pacchetto e cerca il file corrispondente in modo da dare in output le sue dipendenze.
Però non so se quello che mi è stato passato è un nome completo o troncato del pacchetto.
Mi serve saperlo perchè la ricerca del file sarà diversa a seconda di cosa mi è stato passato.
se matcha è un nome completo, altrimenti no
non è ne elegante ne coincisa, ma raggiunge lo scopo
- targzeta
- Iper Master
- Messaggi: 6631
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: [BASH] Riconoscere nome completo da nome corto
Devi usare il fatto che i nomi di pacchetti Slackware sono composti da 4 parti, tutte separate da un '-'. Però devi iniziare dalla fine del nome e non dall'inizio. Qui su Slacky qualcuno ha già dato una risposta molto elegante al problema, solo che non ricordo il post. Altrimenti puoi vedere come fa Patrick nei suo script. Sempre se ho capito bene
Emanuele
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: [BASH] Riconoscere nome completo da nome corto
spina ha scritto:Devi usare il fatto che i nomi di pacchetti Slackware sono composti da 4 parti, tutte separate da un '-'. Però devi iniziare dalla fine del nome e non dall'inizio. Qui su Slacky qualcuno ha già dato una risposta molto elegante al problema, solo che non ricordo il post. Altrimenti puoi vedere come fa Patrick nei suo script. Sempre se ho capito bene
Emanuele
l'hai data tu, e non fare il furbo
anche albatrosla poco più su la data comunque
l'avevo pensato anche io, ma a lui non interessa quello, a lui interessa sapere se è un nome completo o no
cioè se è un nome completo, o quello che si ricava dal metodo elegante esposto da qualcuno
io farei
Codice: Seleziona tutto
echo $PACKAGE | egrep "(i.86|noarch|x86_64)-[0-9].*$"
tanto per capirsi
p.s.
Pat fa qualcosa tipo
Codice: Seleziona tutto
echo $PACKAGE | rev | cut -d- -f4- | rev
UPDATE
ho corretto i?86 con i.86 secondo la giusta osservazione di rock
- d4z_c0nf
- 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: [BASH] Riconoscere nome completo da nome corto
Ahaha Spina ma che ce stai "elegantemente" a cojonà? Ahahah.
Corrà, la tua soluzione ci sta tutta, l'unica cosa è che dovrebbe usare "i.86". Perchè "?" serve per matchare 1a o nessuna occorrenza del pattern a cui è applicato, cioè i?86 matcherebbe "i86" o "86", o mi sbaglio? (orribile la coniugazione del verbo inventato "matchare" scusatemi.)
Edit:
Il tuo uso del carattere "?" è valido per la shell, non per le reg-ex, mi sono documentato :P
Corrà, la tua soluzione ci sta tutta, l'unica cosa è che dovrebbe usare "i.86". Perchè "?" serve per matchare 1a o nessuna occorrenza del pattern a cui è applicato, cioè i?86 matcherebbe "i86" o "86", o mi sbaglio? (orribile la coniugazione del verbo inventato "matchare" scusatemi.)
Edit:
Il tuo uso del carattere "?" è valido per la shell, non per le reg-ex, mi sono documentato :P
Ultima modifica di d4z_c0nf il ven 19 feb 2010, 19:41, modificato 1 volta in totale.
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: [BASH] Riconoscere nome completo da nome corto
hai ragione, mi sono confuso con l'espansione shell...d4z_c0nf ha scritto:Ahaha Spina ma che ce stai "elegantemente" a cojonà? Ahahah.
Corrà, la tua soluzione ci sta tutta, l'unica cosa è che dovrebbe usare "i.86". Perchè "?" serve per matchare 1a o nessuna occorrenza del pattern a cui è applicato, cioè i?86 matcherebbe "i86" o "86", o mi sbaglio? (orribile la coniugazione del verbo inventato "matchare" scusatemi.)
UPDATE
ho visto che hai risposto anche tu, sì mi sono confuso
- targzeta
- Iper Master
- Messaggi: 6631
- Iscritto il: gio 3 nov 2005, 14:05
- Nome Cognome: Emanuele Tomasi
- Slackware: 64-current
- Kernel: latest stable
- Desktop: IceWM
- Località: Carpignano Sal. (LE) <-> Pisa
Re: [BASH] Riconoscere nome completo da nome corto
No no giuro, non l'ho data io, mi ricordo bene di averla vista da qualcuno e ne ero rimasto colpito perchè mi piaceva molto come soluzione. Per il problema in questione non saprei, come al solito non capisco mai cosa mi si chiede
Emanuele
Edit: ah, ricordo anche che quel qualcuno non siete voi
Emanuele
Edit: ah, ricordo anche che quel qualcuno non siete voi
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: [BASH] Riconoscere nome completo da nome corto
anche uno più suspina ha scritto: Per il problema in questione non saprei, come al solito non capisco mai cosa mi si chiede
emanuè... ci siamo capiti vero? :Pspina ha scritto: Edit: ah, ricordo anche che quel qualcuno non siete voi
- ulisse89
- 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: [BASH] Riconoscere nome completo da nome corto
Ok conraid e d4z_c0nf, la vostra soluzione funziona sicuro. Il vincolo sta nel fatto che l'architettura deve sempre rimanere una di quelle opzioni. Ma non mi sembra di averne mai viste altre, no?
Mi interesserebbe sapere anche la soluzione che proponeva spina. Più precisa è e più sono contento.
EDIT: Il post è questo viewtopic.php?f=20&t=24701&hilit=regexp
Ma non è più di tanto utile. Sono quasi convinto che verificare solo l'architettura sia la soluzione giusta. Forse era più semplice di quel che pensavo.
Questa per ora funziona sempre:
Mi interesserebbe sapere anche la soluzione che proponeva spina. Più precisa è e più sono contento.
EDIT: Il post è questo viewtopic.php?f=20&t=24701&hilit=regexp
Ma non è più di tanto utile. Sono quasi convinto che verificare solo l'architettura sia la soluzione giusta. Forse era più semplice di quel che pensavo.
Questa per ora funziona sempre:
Codice: Seleziona tutto
egrep "\-(i.86|noarch|x86_64)-[0-9].*$"
- conraid
- Staff
- Messaggi: 13630
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: [BASH] Riconoscere nome completo da nome corto
in realtà ce ne sono altre
s390 e arm sono due "ufficiali" per esempio
s390 e arm sono due "ufficiali" per esempio