使用 awk 修改 CSV 列中的值,使用变量的问题

使用 awk 修改 CSV 列中的值,使用变量的问题

我有一个由几列数值组成的 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不带参数使用将输出当前记录。

相关内容