仅使用 grep [重复] 显示精确匹配

问题描述 投票:0回答:9

如何显示所有仅正常结束的作业?

当我尝试下面的命令时,它同时显示 OK 和 NOTOK,因为两者都有“OK”

ctmpsm -listall application | grep OK
unix control-m
9个回答
65
投票

您需要更具体的表达方式。尝试

grep " OK$"
grep "[0-9]* OK"
。您想要选择一种与您想要的匹配的模式,但不会与您不想要的匹配。该模式将取决于您的整个文件内容的外观。

您还可以这样做:

grep -w "OK"
,它只会匹配整个单词“OK”,例如“1 OK”,但不会匹配“1OK”或“OKFINE”。

$ cat test.txt | grep -w "OK"
1 OK
2 OK
4 OK

24
投票

这可能对你有用

grep -E '(^|\s)OK($|\s)'

7
投票

这对我有用

grep  "\bsearch_word\b"  text_file > output.txt  ## \b indicates boundaries. This is much faster.

或者,

grep -w "search_word" text_file > output.txt

4
投票

您可以使用

-v
开关来排除字符串。

这将抓取任何以

OK
结尾的行,然后删除任何包含
NOT
的行:

(如果最后没有出现

OK
,只需删除
$
即可。)

cat test.txt | grep 'OK$' | grep -v 'NOT'

2
投票

试试这个:

Alex Misuno@hp4530s ~
$ cat test.txt
1 OK
2 OK
3 NOTOK
4 OK
5 NOTOK
Alex Misuno@hp4530s ~
$ cat test.txt | grep ".* OK$"
1 OK
2 OK
4 OK

1
投票

尝试以下命令,因为它工作得很好:

grep -ow "yourstring"

crosscheck:-

从文件中删除word实例,然后重新执行此命令,它应该显示空结果。


0
投票

最近我在 grep 中遇到了一个问题。我试图匹配模式 x.y.z 和 grep 返回 x.y-z。使用一些正则表达式我们可以克服这个问题,但是使用 grep 整个单词匹配没有帮助。由于我编写的脚本是通用脚本,因此我无法限制对特定方式的搜索,例如 x.y.z 或 x.y-z ..

我想到的快速方法是运行 grep 然后进行条件检查 var=“x.y.z” var1=

grep -o x.y.z file.txt
如果 [ $var1 == $var ] echo“模式完全匹配” 别的 echo“模式不完全匹配” 菲

https://linuxacatalyst.blogspot.com/2019/12/grep-pattern-matching-issues.html


0
投票

试试这个:

grep -P '^(tomcat!?)' tst1.txt

它将在txt文件中搜索特定单词。这里我们正在尝试搜索单词

tomcat


-2
投票

仅搜索“ok”一词

grep "^ok$"

表示以“o”开头,以“k”结尾,必须包含2个字符,就这样。

© www.soinside.com 2019 - 2024. All rights reserved.