如果找不到模式,则退出带有错误代码的awk

如果找不到模式,则退出带有错误代码的awk,awk,Awk,对我来说,一个常见的awk用例是测试一个程序的输出,确保其中有一行存在并打印出预期值。例如,线可以是图案编号,如果编号小于或等于某个值,例如100,则awk测试。问题是,如果程序更改了输出,因此不再打印pattern,那么一个幼稚的awk程序(awk'/pattern/{exit$2>100}))将“成功”,并且不会执行它应该执行的操作 我知道一种“修复”这个问题的方法,例如,awk'/pattern/{c=$2>100?2:1}结束{exit c?c-1:2}'或将grep与awk一起使用,但

对我来说,一个常见的awk用例是测试一个程序的输出,确保其中有一行存在并打印出预期值。例如,线可以是
图案编号
,如果
编号
小于或等于某个值,例如100,则awk测试。问题是,如果程序更改了输出,因此不再打印
pattern
,那么一个幼稚的awk程序(
awk'/pattern/{exit$2>100})
)将“成功”,并且不会执行它应该执行的操作

我知道一种“修复”这个问题的方法,例如,
awk'/pattern/{c=$2>100?2:1}结束{exit c?c-1:2}'
或将grep与awk一起使用,但这似乎冗长而不雅,更不用说很难记住怎么做了。有没有更简单、更自然的方法?也许是用awk以外的东西

如果找不到模式,则退出带有错误代码的awk

如果您想要:

状态 退出状态 否/模式/ 非零 数字小于或等于100 非零 大于100的数字 零 如果找不到模式,则退出带有错误代码的awk

如果您想要:

状态 退出状态 否/模式/ 非零 数字小于或等于100 非零 大于100的数字 零
我相信你所追求的是以下逻辑:

awk -v c=2 '/pattern/{c=!($2<100)}END{exit c}'

awk-vc=2'/pattern/{c=!($2我相信你所追求的是以下逻辑:

awk -v c=2 '/pattern/{c=!($2<100)}END{exit c}'

awk-v c=2'/pattern/{c=!($2
“成功”并且没有做它应该做的事。
为什么不呢?我会把它反转过来,然后退出!($2>100)
。所以,你有了一个解决方案,你可以只
退出!c
“成功”而不做它应该做的事。
为什么不呢?我会把它反转过来,然后退出!($2>100)
.Soo,你有一个解决方案,你可以退出!c“不管怎样,它将是零或一”-不确定你的意思。你可以有多个错误退出代码,帮助区分不同的错误。“它将是零或一”-不确定您的意思。您可以有多个错误退出代码,有助于区分不同的错误。