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 这就是你想要的吗