awk搜索字符串并设置退出代码(如果存在)

awk搜索字符串并设置退出代码(如果存在),awk,Awk,我想检查两个地址之间是否存在一行,如果存在则返回退出代码0,如果不存在则返回退出代码1。我想我已经有了一个可行的例子,但我想知道是否有更干净的方法可以做到这一点;或者是一种在RedHat上也很常见的不同工具 我的命令: awk 'BEGIN{found=1}NR==1,/^Match/{ if ( $0 == "PermitRootLogin yes" ) \ { found=0 } }END { exit found }' /etc/ssh/sshd_config 谢谢,很好用!如果

我想检查两个地址之间是否存在一行,如果存在则返回退出代码
0
,如果不存在则返回退出代码
1
。我想我已经有了一个可行的例子,但我想知道是否有更干净的方法可以做到这一点;或者是一种在RedHat上也很常见的不同工具

我的命令:

awk 'BEGIN{found=1}NR==1,/^Match/{ if ( $0 == "PermitRootLogin yes" ) \
    { found=0 } }END { exit found }' /etc/ssh/sshd_config

谢谢,很好用!如果你能向我解释一下它是如何工作的,我将不胜感激。如果它找到
Permit…
字符串,它将设置一个标志
f
来说明这一点。如果发现
匹配
,则停止读取输入文件。退出脚本时,如果设置了
f
标志,则将退出状态设置为0,否则设置为1。请注意,awk主体中的
退出
表示
带我到结束部分
,而结束部分中的
退出
表示
以指定的退出状态退出程序
awk '/^PermitRootLogin yes$/{f=1} /^Match/{exit} END{exit !f}' /etc/ssh/sshd_config