我写了这样一行diff fileA.txt fileB.txt | grep -v "^[11,12d9]"
。如果没有该grep
部件,输出将如下所示:
1d0
< loop
11,12d9
< polo
< pool
Run Code Online (Sandbox Code Playgroud)
但是使用grep
,输出将如下所示:
< loop
< polo
< pool
Run Code Online (Sandbox Code Playgroud)
我认为这grep -v
有点像反向搜索。但我不明白这^[11,12d9]
部分,它有什么作用?
grep -v "^[11,12d9]"
是的,正如您发现的那样-v
用于反转匹配,并将返回与给定模式 不匹配的行^[11,12d9]
。
并且^[11,12d9]
正在做的是说匹配字符[...]
,如果它们出现在一行^
的开头(是行锚的开头),则忽略这些行(因为使用了-v
反转匹配);
所以基本上以1
, ,
, 2
,d
或9
字符之一开头的行将被忽略(字符类中的重复字符也将被忽略)。
但如果您想忽略以 string 开头的行11,12d9
,则需要grep -v '^11,12d9'
.
*与问题无关,但要注意字符类中]
,^
和-
字符的使用:
if^
字符:它可以放在任何地方,[]
但不能放在第一个字符;如果它是第一个字符,它会对该类中的字符起到否定作用。
如果]
字符:它应该是第一个字符。
如果-
字符:它应该是最后一个字符。