我想要 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'