awk: erreur d’exécution: index de champ négatif

J’ai actuellement les éléments suivants:

function abs() { echo $(($1<0 ?-$1:$1)); } echo $var1 | awk -F" " '{for (i=2;i<=NF;i+=2) $i=(95-$(abs $i))*1.667}' 

var1 est:

 4 -38 2 -42 1 -43 10 -44 1 -45 6 -46 1 -48 1 -49 

Quand je lance ceci, je reçois l’erreur:

 awk: run time error: negative field index $-38 FILENAME="-" FNR=1 NR=1 

Est-ce que cela a quelque chose à voir avec la partie 95-$(abs $i) ? Je ne sais pas comment résoudre ce problème.

Essaye ça:

 echo "$var1" | awk 'function abs(x) { return x<0 ? -x : x } { for (i=2;i<=NF;i+=2) $i = (95-abs($i))*1.667; print }' 

Chaque ligne de saisie de AWK est placée dans les champs par l’interpréteur. Les champs peuvent être accédés avec $ N pour N> 0. $ 0 signifie la ligne entière. $ N pour N <0 est absurde. Les variables ne sont pas préfixées par un signe dollar.