每当我写grep -v "0"
以便以某种方式忽略0号时
数字10也被忽略了。
请帮助我使用grep -v“0”而忽略0并且不忽略10
答案 0 :(得分:3)
grep "0"
将匹配其中包含0的任何行,因此否定不匹配其中包含0的任何行。由于10中有一个零,它将被“忽略”。
你需要用字边界(\b
)包围你的0,它告诉正则表达式引擎在你的零之前或之后不能有一个单词字符([a-z0-9]):{{ 1}}
请注意,grep逐行工作,因此如果一行包含10和0,则不会匹配。
答案 1 :(得分:3)
您可以使用全文:
grep -vw 0
这将允许10但不是0.1
答案 2 :(得分:2)
因此,grep逐行工作。如果该行中的某些内容匹配,则它与该行匹配。因为你已经说过要反转匹配集(-v),所以它不显示行中包含0的任何内容,其中包含10个。
如果你只有像
那样的逐行输出0
1
2
3
4
<whatever>
10
11
你只想忽略任何只有'0'的东西,
你可以做点什么grep -v“^ 0 $”
我创建了一个包含一些数字的文件
cat numbers.txt 0 1 5 10 11 12然后跑了grep。
grep -v "^0$" numbers.txt 1 5 10 11 12
这就是你想要的吗?
答案 3 :(得分:0)
假设它与此类似:
12 0 5 10
您只需使用grep:grep -v " 0 "