如果我的文件包含 count=0 以及 count=!0,我如何使用 grep count=[some number >0] 查找行?

如果我的文件包含 count=0 以及 count=!0,我如何使用 grep count=[some number >0] 查找行?

我想要 grep 所有包含 的行,count=<some number>除了包含 的行之外count=0

例如,如果我的文件包含以下行

Line1:  Hi it is text   count=0   yes
Line2:    Good count=2 bye bye 
Line3:   hi how are you count=3
Line4: -68 nice count=987 bye

我希望我的命令返回第 2、3 和 4 行。

答案1

据我理解,答案是:
您可以 grep “count=0” 并使用以下命令反转匹配:
grep --invert-match ^count=0$

对于 grep 文件,将其添加为选项:
grep --invert-match ^count=0$ filename

上面的 grep 命令只要求文件的每一行都包含“count=X”,而行中不能包含其他字符。如果文件包含的内容多于“count=X”,则正确的 grep 命令是grep --invert-match count=0 filename。符号 ^ 和 $ 匹配行首和行末。

如果你的文件包含一些没有 的行count=some_num,而你不想在输出中看到这些行,那么 grep 看起来就像这样:grep -E 'count=([1-9]+|[0-9][0-9]+)' - 这将 grep count=num,其中 num 大于零。只有当你有 'count=00' 行时才会失败 - 有两个或更多个零
(^ 由扎娜

测试:

leonid@DevSSD:~$ cat txt
count=0aaaa
bbb count=1 aaaa
bbb count=999 aaaa
line without pattern
leonid@DevSSD:~$ grep --invert-match count=0 txt
bbb count=1 aaaa
bbb count=999 aaaa
line without pattern
leonid@DevSSD:~$ grep -E 'count=([1-9]+|[0-9][0-9]+)' txt
bbb count=1 aaaa
bbb count=999 aaaa

答案2

您可以使用 sed 来完成。

grep "count=" | sed -e '/"count=0"/d'

相关内容