使用awk和if语句

时间:2018-12-19 19:33:51

标签: awk

我需要使用AWK命令对2个数字进行比较。如果一个数字高一个,另一个则触发命令。 Unix shell非常精简,但确实支持awk。我对此很陌生,需要一点帮助。

我尝试了许多不同的方法。我不知道我在想什么。

if (awk '{$1 > 80}' $OUTPUT3) echo 'FireActions' else fi

因此,如果变量$ OUTPUT3中的数字大于80,则触发操作。否则请忽略。

目前没有动作。

2 个答案:

答案 0 :(得分:1)

awk对于这种特殊情况有点尴尬。您需要返回0表示成功,而返回非零则表示失败,这将反转布尔值0 == false和1 == true。但这还不错:

if awk 'END{ exit !($1 > 80)}' $OUTPUT3; then echo 'FireActions'; else ...; fi

以上假设$ OUTPUT3包含输入文件的名称,该名称似乎不是您想要的。如果只想知道$ OUTPUT3是否大于80,则awk是错误的工具。你想要

if test "$OUTPUT3" -gt 80; then ...; fi

如果出于某些原因您确实想使用awk,则可以执行以下操作:

if echo $OUTPUT3 | awk 'END{ exit !($1 > 80)}'; then echo 'FireActions'; fi 

if awk 'END{ exit !(c > 80)}' c="$OUTPUT3" < /dev/null ; then echo 'FireActions'; fi

答案 1 :(得分:0)

尝试一下:

$ OUTPUT3=80
$ awk -v val="$OUTPUT3" 'BEGIN{if (val>80) print "FireActions"}'
$ OUTPUT3=81
$ awk -v val="$OUTPUT3" 'BEGIN{if (val>80) print "FireActions"}'
FireActions

要运行“ FireActions”之类的命令,请执行以下操作:

awk -v val="$OUTPUT3" 'BEGIN{if (val>80) system("FireActions")}'