Newsgroup: it.comp.os.linux.software
Titolo: estrarre il valore di una variabile da un file

Buongiorno a tutti,
in uno script shell (bash) devo mettere in una variabile il valore che
ha una variabile in un file.
Ho fatto:
prova=`sed -n "/year=/p" file.f`
il problema è che mi prende tutta la riga del file.f che contiene
"year=".
IO avrei bisogno di:
1) escludere quelle che iniziano con "c" o "C"
2) prendere il valore di year=
 (esempio se nel file.f "year=22" io vorrei ottenere nel mio script
shell prova = 22).
Probabilmente non devo usare sed ma non mi viene in mente altro.
Grazie
S.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Probabilmente non devo usare sed ma non mi viene in mente altro.
Prova con grep e cut.
Ciao,
-- 
Cris Carampa (
cri...@operamail.com
)
"E` evidente che siamo di fronte allo sfruttamento opportunistico
  di quella quota di astensioni fatalmente derivanti da disinteresse
  o indifferenza." (Gustavo Zagrebelsky)

 S.
"cat nomefile | grep year | cut -d "=" -f 1" (o 2? non ricordo da dove cut
inizia a contare)
Red
ps = non capito una cippa sula cosa della "c" o "C", fammi un esempio

 "cat nomefile | grep year | cut -d "=" -f 1" (o 2? non ricordo da dove cut
anzi scusa:
prova=$(cat nomefile | grep year | cut -d "=" -f 1)

 prova=$(cat nomefile | grep year | cut -d "=" -f 1)
Li ho rovati, ma in realtà nessuno dei due fa quello che cerco io. 
rendono troppe cose.
Un esmepio del mio file è
file.f:
ccc  anno non completo 
       lat=94,year=58, 
c      lat=94,year=54,nlon=9,nlat=8,
       real mese(lon,lat,year)
Quello che voglio io è avere uno script esempio.bash
#!/bin/bash
prova=$(cat nomefile | grep year | cut -d "=" -f 1)
che prova valga:
58
(chè la riga che inizia con "c" la voglio escudere)


Avevo provato cosi:
prova=`sed -n "/year=/p" file.f`
e mi sembra che tiri fuori le stesse righe di 
prova=$(cat file.f | grep year | cut -d "=" -f 1)
però non riesco ad estrerre il numero che c'è dopo l'uguale di year.
Sono ancora al punto di partenza.


 (chè la riga che inizia con "c" la voglio escudere)
ma mettere 2 o 3 awk in serie, il primo esclude la 'c' il secondo prende year=58 
(con FS = ",") e il terzo prende il secondo campo con FS = "=" ?
-- 
"...vous avez tout la vie pour vous amuser,
     vous avez tout la mort pour vous reposer..."
RRB @ 
http://www.allservice.it/


prova così se può andare:
VAR=`sed -n 's/^[^c].*year=\(.*\),/\1/p' file.f`
ciao
-- 
Ranger!
ranger chiocciol@ 
racine.ra.it

 (con FS = ",") e il terzo prende il secondo campo con FS = "=" ?
infatti quoto, nno avevo capito bene come era fatto il file dal post
inisziale

        real mese(lon,lat,year)
Direi qualcosa tipo:
#!/bin/bash
prova=`cat file.f | grep -v ^c | grep year\= | cut -d \= -f 3 | cut -d "," -f 1`
-- 
Massimo Bacilieri AKA Crononauta 
ICQ:4005815

 58
scusa il ritardo, io di solito qs problemini li risolvo in modo
incrementale con awk, incrementale nel senso che si comincia con un
pezzetto di programma che fa una cosa, si aggiunge, si modifica
per edificazione delle masse, riporto tutta la "sessione di sviluppo",
naturalmente a te serve solo la riga datata 12:05:56
ciao
boffi95/../~ Fri Jul 08 12:01:56: cd tmp/
boffi95/../tmp Fri Jul 08 12:02:02: cat > pippo.f
ccc  anno non completo 
       lat=94,year=58, 
c      lat=94,year=54,nlon=9,nlat=8,
       real mese(lon,lat,year)
boffi95/../tmp Fri Jul 08 12:02:31: awk '/^[ 0-9].*year=/' pippo.f 
       lat=94,year=58, 
boffi95/../tmp Fri Jul 08 12:03:32: awk '/^[ 0-9].*year=/{gsub(/.*year=/,'');print}' pippo.f 
awk: line 1: syntax error at or near )
boffi95/../tmp Fri Jul 08 12:05:19: awk '/^[ 0-9].*year=/{gsub(/.*year=/,"");print}' pippo.f 
58, 
boffi95/../tmp Fri Jul 08 12:05:32: awk '/^[ 0-9].*year=/{gsub(/.*year=/,"");gsub(/,.*/,"");print}' pippo.f 
58
boffi95/../tmp Fri Jul 08 12:05:56: prova=$(awk '/^[ 0-9].*year=/{gsub(/.*year=/,"");gsub(/,.*/,"");print}' pippo.f )
boffi95/../tmp Fri Jul 08 12:06:17: echo $prova
58
boffi95/../tmp Fri Jul 08 12:06:22: 
-- 
 I wish we'd come to our senses and see there is no truth
 In those who promote the confusion for this ever changing mood.
(people get ready people get ready people get ready people get ready)

> boffi95/../tmp Fri Jul 08 12:05:56: prova=$(awk '/^[ 0-9].*year=/{gsub(/.*year=/,"");gsub(/,.*/,"");print}' pippo.f )
grazie mille mille!
