提问人:Chel MS 提问时间:9/27/2023 更新时间:9/27/2023 访问量:281
Grep 仅匹配行 [closed] 中的确切字符串
Grep match only the exact string in the line [closed]
问:
闭。这个问题与编程或软件开发无关。它目前不接受答案。
这个问题似乎不是关于特定的编程问题、软件算法或程序员主要使用的软件工具。如果您认为该问题在另一个 Stack Exchange 站点上是主题,您可以发表评论以解释该问题可能在哪里得到回答。
上个月关闭。
我正在尝试从以下命令的输出中获取该词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
理想情况下,它应该按照要求返回。我尝试了这个论坛上建议的其他选项,但没有任何帮助。
我希望获得 if only 匹配的返回值,否则.1
0
OK
1
bash --version
GNU bash, version 5.1.4(1)-release (x86_64-pc-linux-gnu)
答:
0赞
KamilCuk
9/27/2023
#1
所以反转不行。
! grep "NOT OK$" <<<"$log"; echo $?
评论
1赞
Freeman
9/28/2023
因为你的好主意 1++
0赞
Freeman
9/27/2023
#2
看看这个:
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
评论
1赞
Freeman
9/27/2023
给我负面评价的朋友应该善意地解释为什么他们给了我负面评价,以便我解决这个问题!
2赞
KamilCuk
9/28/2023
我投了赞成票。
评论
valtool --validate <filename>; echo $?
grep -E 'signatures +OK'
+
log
grep
if grep ....; then; ...
grep
[[ $log =~ signatures' '+OK ]]