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

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

我写了这样一行diff fileA.txt fileB.txt | grep -v "^[11,12d9]"。如果没有该grep部分,输出将如下所示:

1d0  
< loop  
11,12d9  
< polo  
< pool  

但使用 时grep,输出将如下所示:

< loop  
< polo  
< pool  

我认为这grep -v有点像反向搜索。但我不明白这个^[11,12d9]部分,它是做什么的?

答案1

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

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

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

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

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


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

如果是^字符:它可以放在任何位置[]但不能是第一个字符;如果它是第一个字符,它将对该类中的字符起作用。
如果是]字符:它应该是第一个字符。
如果是-字符:它应该是最后一个字符。

相关内容