我目前有以下内容:
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)
部分有关?我不知道如何解决这个问题。
答案 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是荒谬的。变量不带有美元符号前缀。