'grep -v "^[...]"' 是什么意思?

0 grep diff

我写了这样一行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]部分,它有什么作用?

αғs*_*нιη 5

grep -v "^[11,12d9]"

是的,正如您发现的那样-v用于反转匹配,并将返回与给定模式 不匹配的行^[11,12d9]

并且^[11,12d9]正在做的是说匹配字符[...],如果它们出现在一行^的开头(是行锚的开头),则忽略这些行(因为使用了-v反转匹配);

所以基本上以1, ,, 2,d9字符之一开头的行将被忽略(字符类中的重复字符也将被忽略)。

但如果您想忽略以 string 开头的行11,12d9,则需要grep -v '^11,12d9'.


*与问题无关,但要注意字符类中],^-字符的使用:

if^字符:它可以放在任何地方,[]但不能放在第一个字符;如果它是第一个字符,它会对该类中的字符起到否定作用。
如果]字符:它应该是第一个字符。
如果-字符:它应该是最后一个字符。