grep的bash问题

时间:2010-08-05 15:54:38

标签: bash unix

每当我写grep -v "0"以便以某种方式忽略0号时 数字10也被忽略了。

请帮助我使用grep -v“0”而忽略0并且不忽略10

4 个答案:

答案 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 "

填入0