我有一个由几列数值组成的 CSV 文件。我想将第三列替换为abs($3-1)
,即第三列中的数字的绝对值减1。
我尝试使用以下命令:
awk '{d=($3>1)?($3-1):(-$3+1); print $1 " " $2 " " $d}' file.csv
希望变量d
能够存储正确的值。但是,我得到的输出是完全错误的。我在这里做错了什么?抱歉,我才刚刚开始awk
。
答案1
在您的代码中,是:th 字段$d
的值。d
变量的值d
被写入d
。
您的代码可以简化(不使用额外的变量)为
$3 = $3 > 1 ? $3 - 1 : 1 - $3
print
或者,
$3 -= 1; if ($3 < 0) $3 = -$3
print
...假设OFS
具有正确的分隔符值。print
不带参数使用将输出当前记录。