首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果找不到模式,则使用错误代码退出awk

问如果找不到模式,则使用错误代码退出awk
EN

Stack Overflow用户
提问于 2021-02-04 13:05:53
回答 1查看 253关注 0票数 0

对于我来说,一个常见的awk用法是测试程序的输出,并确保其中有一行并打印期望值。例如,如果pattern number小于或等于某一值,例如100,则行可以是number和awk测试。问题是,如果程序更改了输出,因此不再打印pattern,那么天真的awk程序(awk '/pattern/ {exit $2 > 100}')就会“成功”,并且不会做它应该做的事情。

我知道如何“解决”这个问题。awk '/pattern/ {c = $2 > 100 ? 2 : 1} END {exit c ? c - 1 : 2}'或使用grep与awk,但这似乎冗长和不雅,更不用说很难记住做。有更简单更自然的方法吗?也许除了awk以外还有别的东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-04 13:24:28

我相信你所追求的是以下逻辑:

代码语言:javascript
复制
awk -v c=2 '/pattern/{c=!($2<100)}END{exit c}'

如果将c的默认值设置为2,则在找不到pattern值时,默认退出状态为2。如果找到pattern,它将用1(如果是$2 >= 100 )和0 (如果是$2 < 100 )覆盖该值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66046253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档