【发布时间】:2013-10-24 20:45:29
【问题描述】:
我怎样才能只显示所有正常结束的作业?
当我尝试下面的命令时,它同时显示 OK 和 NOTOK 因为两者都有“OK”
ctmpsm -listall application | grep OK
【问题讨论】:
我怎样才能只显示所有正常结束的作业?
当我尝试下面的命令时,它同时显示 OK 和 NOTOK 因为两者都有“OK”
ctmpsm -listall application | grep OK
【问题讨论】:
您需要更具体的表达方式。试试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
【讨论】:
ctmpsm -listall application | grep -w "ABCD123" 有行显示 ABCD123 和 ABCD123@ 但我只想要 ABCD123
ABCD123 之后允许的是是什么?刚刚结束?空间?标签?可能是其中任何一个?
grep ".* ABCD123$" 或只使用grep " ABCD123$"。如果它自己在一条线上,那么grep "^\s*ABCD123\s*$"。
这可能对你有用
grep -E '(^|\s)OK($|\s)'
【讨论】:
(^|\s) 表示行或空格的开头。 ($|\s) 表示行尾或空格。所以这将匹配“OK”以及“OK”或“OK”或“OK”。
您可以使用-v 开关排除字符串。
这将抓取任何以OK 结尾的行,然后删除任何包含NOT 的行:
(如果末尾没有出现OK,只需删除$即可。)
cat test.txt | grep 'OK$' | grep -v 'NOT'
【讨论】:
这对我有用:
grep "\bsearch_word\b" text_file > output.txt ## \b indicates boundaries. This is much faster.
或者,
grep -w "search_word" text_file > output.txt
【讨论】:
试试这个:
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
【讨论】:
试试下面的命令,因为它完美运行:
grep -ow "yourstring"
crosscheck:-
从文件中删除word的实例,然后重新执行此命令,它应该显示空结果。
【讨论】:
-o 不相关,-w 已在最高投票答案中提供。
试试这个:
grep -P '^(tomcat!?)' tst1.txt
它将在 txt 文件中搜索特定的单词。这里我们尝试搜索单词tomcat
【讨论】:
最近我在 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
【讨论】: