awk:运行时错误:负字段索引

时间:2014-08-04 01:38:17

标签: bash unix awk

我目前有以下内容:

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是:

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

当我运行时,我收到错误:

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

这是否与95-$(abs $i)部分有关?我不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:3)

试试这个:

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 }'

答案 1 :(得分:0)

AWK的每一行输入都由解释器放在字段中。对于N&gt;,可以使用$ N访问这些字段。 0. $ 0表示整条线。 N&lt; N&lt; N&n; 0是荒谬的。变量不带有美元符号前缀。