cd /var/log/packages
ls | grep '\w' | cut -d '-' -f 1
non vale per grep(1) non GNU
Moderatore: Staff

Paoletta ha scritto: oppure assumere che i nomi degli autori siano contraddistinti da almeno 2 lettere (che di solito succede) e verrebbe:

echo filename | sed "s/\(-[a-zA-Z0-9\._]\{1,\}\)\{3\}$//"

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;
- Codice: Seleziona tutto
DIRTY_NAME=`tar xf package.tgz install/slack-desc -O | egrep '[:graph:]*: '`
Dovrebbe restituire, a meno di "arruginitura eccessiva" sulla REGEXP, una riga tipo queste (tratte da obconf):
- 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
Ricavate queste info, una filtrata con cut ed head ed il gioco è fatto:
- Codice: Seleziona tutto
NAME=`tar xf package.tgz install/slack-desc -O | egrep '[:graph:]*: ' | cut -d: -f1 | head -n1`
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 )



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.




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

echo $PACKAGE | egrep "(i.86|noarch|x86_64)-[0-9].*$"echo $PACKAGE | rev | cut -d- -f4- | rev


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




spina ha scritto: Per il problema in questione non saprei, come al solito non capisco mai cosa mi si chiede
spina ha scritto:Edit: ah, ricordo anche che quel qualcuno non siete voi
:P
egrep "\-(i.86|noarch|x86_64)-[0-9].*$"

Visitano il forum: Exabot [Bot] e 0 ospiti