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}'
où 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.