ciao a tutti....
ho un problema con l'uso di awk.....
se faccio ... echo $y | awk '{print $2}'
ma se io faccio ....j=2....echo $y | awk '{print $j}'...mi da errore....come indirizzare correttamente la variabile???
Grazie e ciaooo
ciao a tutti....
ho un problema con l'uso di awk.....
se faccio ... echo $y | awk '{print $2}'
ma se io faccio ....j=2....echo $y | awk '{print $j}'...mi da errore....come indirizzare correttamente la variabile???
Grazie e ciaooo
Cosa vuoi fare, di preciso?Originariamente inviato da billybilly
se faccio ... echo $y | awk '{print $2}'
ma se io faccio ....j=2....echo $y | awk '{print $j}'...mi da errore....come indirizzare correttamente la variabile???
Che significa "indirizzare correttamente la variabile"?
"Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".
cioe io devo fare dei tagli sull'output con awk all'interno di un ciclo aho un contatore j.... quindi alla prima iterazione voglio visualizzare la prima colonna alla seconda iterazione la seconda...ecc..ecc....
in y(variabile di esempio)ho un particolare insieme di righe e colonne....un output normalissimo
echo $y | awk '{print $j}'
cioè se io facessi echo $y | awk '{print $2}' non mi crea problemi perche gli dico direttamente su quale colonna effettuare la mia selezione..... non riesco a fare il passaggio indirettamente cioè..
se associo j=2 il numero della colonna che voglio del mio output
non riesco a trovare la sintassi corretta :
echo $y | awk '{print $j}
in pratica se faccio cosi al posto di $j mi sostituisce 2 mentre la sintassi corretta mi richiede $2....
quindi devo fare in modo di operare con il comando awk riferendomi non direttamente a una colonna ma in modo indiretto tramite l'uso di una qualsiasi variabile
bo...spero si capisca :master:
Capito adesso. Il problema sta nel quoting della shell, gli operatori '' (usati per proteggere il codice awk e non farlo interpretare dalla shell) ammazzano il significato della sostituzione di variabile: $j lo interpreta awk, non la shell, e il risultato e` quello che e`.Originariamente inviato da billybilly
se associo j=2 il numero della colonna che voglio del mio output
non riesco a trovare la sintassi corretta :
echo $y | awk '{print $j}
in pratica se faccio cosi al posto di $j mi sostituisce 2 mentre la sintassi corretta mi richiede $2....
quindi devo fare in modo di operare con il comando awk riferendomi non direttamente a una colonna ma in modo indiretto tramite l'uso di una qualsiasi variabile
Soluzioni possibili:
- se le istruzioni awk sono poche e/o semplici, usa un quoting piu` blando, tipo "{ print $j }", una cosa tipo
- fai fare il ciclo ad awk. Come fare dipende dal particolare compito.codice:for i in `seq 1 10`; do echo $i | awk "{ print \$$i}"; done
"Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".
SEI un grande Grazie adesso lo provo Ciaoooooo