linux Grep只匹配行中的确切字符串[已关闭]

qgzx9mmu  于 2023-10-16  发布在  Linux
关注(0)|答案(2)|浏览(115)

已关闭此问题为not about programming or software development。它目前不接受回答。

这个问题似乎不是关于a specific programming problem, a software algorithm, or software tools primarily used by programmers的。如果你认为这个问题与another Stack Exchange site的主题有关,你可以留下评论,解释在哪里可以回答这个问题。
18天前关闭
Improve this question
我试图从下面命令的输出中grep单词OK
valtool --validate <filename>,其抛出低于输出
如果成功--> <filename>: layers signatures val OK &如果失败--> <filename>: layers signatures val NOT OK

log='/home/files/rapid.so: layers signatures NOT OK'
~$ echo $log
/home/files/rapid.so: layers signatures NOT OK

~$ echo $log |grep -w 'OK' ;echo $?
/home/files/rapid.so: layers signatures NOT OK
0

理想情况下,它应该根据要求返回1。我尝试了这个论坛上建议的其他选项,但没有任何帮助。如果只匹配OK,则返回值为0,否则返回值为1

bash --version
GNU bash, version 5.1.4(1)-release (x86_64-pc-linux-gnu)
pes8fvy9

pes8fvy91#

因此,反转不正常。

! grep "NOT OK$" <<<"$log"; echo $?
gab6jxml

gab6jxml2#

看看这个

echo "$log" | grep -w 'NOT OK' >/dev/null && echo 1 || echo 0

并使其成为一个简单的脚本:

log=$(valtool --validate <filename>)

if echo "$log" | grep -w 'NOT OK' >/dev/null; then
    echo "Validation failed"
    exit 1
else
    echo "Validation successful"
    exit 0
fi

相关问题