grep的bash问题
每当我写grep的bash问题,bash,unix,Bash,Unix,每当我写grep-v“0”以忽略0这个数字时 数字10也被忽略了 请帮助我在使用grep-v“0”的过程中忽略0,而不忽略10。grep“0”将匹配其中包含0的任何行,因此对该行的否定将不匹配其中包含0的任何行。由于10中有一个零,它将被“忽略” 您需要用单词边界(\b)包围0,这会告诉正则表达式引擎在0之前或之后不能有单词字符([a-z0-9]):grep“\b0\b” 请注意,grep是按行工作的,因此如果一行包含10和0,它将不匹配。您可以使用整个单词: grep -vw 0 这将允许1
grep-v“0”
以忽略0这个数字时
数字10也被忽略了
请帮助我在使用grep-v“0”的过程中忽略0,而不忽略10。grep“0”将匹配其中包含0的任何行,因此对该行的否定将不匹配其中包含0的任何行。由于10中有一个零,它将被“忽略”
您需要用单词边界(\b
)包围0,这会告诉正则表达式引擎在0之前或之后不能有单词字符([a-z0-9]):grep“\b0\b”
请注意,grep是按行工作的,因此如果一行包含10和0,它将不匹配。您可以使用整个单词:
grep -vw 0
这将允许10,但不是0.1,假设它位于类似于以下内容的行中: 120510
您只需用grep:
grep-v“0”
填充0,grep就可以逐行工作。如果行中有匹配的内容,则它与行匹配。因为您说过要反转匹配集(-v),所以它不会在包含10的行中显示任何包含0的内容
如果你只是逐行输出,比如
0
1
2
3
4
<whatever>
10
11
0
1.
2.
3.
4.
10
11
您只想忽略任何仅为“0”的内容
你可以这样做
grep-v“^0$”
我创建了一个包含一些数字的文件
cat numbers.txt
0
1
5
10
11
12
cat number.txt
0
1.
5.
10
11
12
然后运行grep
grep -v "^0$" numbers.txt
1
5
10
11
12
grep-v“^0$”numbers.txt
1.
5.
10
11
12
这就是你想要的吗