Problemi con i tick in uno script sh

Riccardo Torrini riccardo a torrini.org
Gio 19 Nov 2009 00:38:24 CET


On Wed, Nov 18, 2009 at 11:37:37PM +0100, Alberto Rizzi wrote:

> SourceWord=`awk 'BEGIN{FS=","}; /'${i}'/ {print $2}' $2`
> 
> mi cerca la parola ${i} nel file $2, e salva in SourceWord
> la seconda colonna corrispondente alla riga trovata.
> Il file e` un csv separato da virgole.

Avere un esempio del file di input e` sempre utile, si possono
trovare scorciatoie che rendono piu` veloce/leggibile il tutto.

Io forse avrei fatto cosi`:

SourceWord=`grep "${i}" ${2} | ewk -F"," '{print $2}'`

al limite al posto di "awk ..." puoi usare "cut -f 2 -d ," ma
potrei essere piu` preciso solo vedendo in/out/desiderata  ;)

Soprattutto in presenza di file molto grossi (con tante righe)
il grep e` ordini di grandezza piu` veloce di un awk '/.../' a
meno che le righe che corrispondono non siano quasi tutte.


Se proprio vuoi far funzionare il tuo esempio, con solo awk e
senza pipe devi evitare la doppia apertuta delle virgolette:
... awk -v foo="${i}" '{if ($0 ~ foo) print $2}' ...


PS: li ho scritti senza provarli prima  0=)


-- 
Riccardo. ( http://www.GUFI.org/~vic/ )


Maggiori informazioni sulla lista Varie