使用 awk 在列内计算

使用 awk 在列内计算

这是我到目前为止得到的:

var="1.5"

echo "date,1%sa,comment" |
 awk -F ',' '{print $2}' |
 awk -v i="$var" -F '%' '{$1*=i; print $1}'

# prints: 1.5

我需要从外部变量获取要计算的值,awk因此使用-v.在代码中,我使用两个 awk 命令将数字与%sa.我怎样才能组合这两个命令并像这样重新打印整行:

date,1.5,comment

答案1

var="1.5"

echo "date,1%sa,comment" |
awk -F ',' -v OFS=',' -v i="$var" '{ split($2, a, "%"); $2 = a[1]*i; print }'

这使用逗号作为输入和输出分隔符,然后拆分 上的第二个字段,将其设置为传递到程序的变量值乘以%前面的数字,并打印修改后的记录。%

相关内容