如何在使用awk打印之前定义变量并执行浮点运算

时间:2016-06-07 16:10:04

标签: bash awk

我想这样做

grep E0 OSZICAR | tail -1 | awk -v var="$e0" '{vac = $5 - $var - 0.5 * 9.860; print vac}'

$ e0是之前定义的bash变量。现在我们收到错误消息:

awk:致命:尝试访问字段-287

-287是$ e0

的整数部分

2 个答案:

答案 0 :(得分:0)

您应该使用:

grep E0 OSZICAR | tail -1 |
awk -v var="$e0" '{vac = ($5 - var - 0.5) * 9.860; print vac}'

请注意在awk中使用var代替$var,并在子表达式周围使用括号。

答案 1 :(得分:0)

您根本不需要greptail

awk -v var="$e0" '/E0/{num=$5}END{print((num - var - 0.5) * 9.860)}' OSZICAR