PDA

Visualizza la versione completa : [BASH] Selezionare una certa parola della riga


jeangr
04-05-2006, 17:47
Salve.
Se ho salvato una certa frase in una variabile in uno script in linux,come faccio a salvare in un'altra variabile la parola che sta ad una certa posizione?

esempio:
frase= " ciao a tutti voi "

voglio salvare la 3a parola della frase che e' "tutti"....

come faccio?

grazie

oregon
04-05-2006, 17:50
Script di linux? Quale "dialetto"?

jeangr
04-05-2006, 18:06
bash.

tipo devo salvare la grandezza di file ottenuta tramite

'ls -al <nome_file>'

e si trova alla quinta parola..

con

' ls -al <nome_file> | cut -f5 -d " " '

non ottengo quello che voglio....

idee?

jeangr
04-05-2006, 18:13
con -d9 mi becca giusta la 5a parola...come mai?

toraz
04-05-2006, 20:02
Succede perché i campi della riga non sono separati da uno spazio solo, una soluzione potrebbe essere



ls -l | tail -n +2 | tr -s [:space:] | cut -d " " -f 5


Il tail serve a togliere dall'output la prima riga di ls (total X per intenderci) dopo il cut risulterebbe come usa linea vuota.

toraz
04-05-2006, 20:06
Ci ho fatto caso solo dopo che ls lo chiami con un solo file come parametro, quindi leva il tail, altrimenti non funziona più. :)

jeangr
05-05-2006, 10:15
ls -l | tr -s [:space:] | cut -d " " -f 5

mi ritorna il 2o parametro (quello dopo la descrizione dei permessi)....

cosa fa di specifico 'tr -s [:space:]' ?

jeangr
05-05-2006, 10:28
ls -l | tr -s " " | cut -d " " -f 5

cosi funziona....cancella tutte le occorrenze di una stringa di caratteri consecutivi, tranne la prima.

:)

toraz
05-05-2006, 10:50
Non che dubiti, ma sei sicuro che "tr -s [:space:]" non funziona? Perché nel caso specifico dovrebbe essere equivalente usare "[:space:]" o uno spazio soltanto.

jeangr
05-05-2006, 10:53
sto provando questi script in un shell ridotta di linux dove non sono presenti tutti i comandi...
nello specifico ti rimando a cosa mi riferisco:
FOX (http://www.acmesystems.it/?id=4)

Loading