我写了这样一行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^字符:它可以放在任何地方,[]但不能放在第一个字符;如果它是第一个字符,它会对该类中的字符起到否定作用。
如果]字符:它应该是第一个字符。
如果-字符:它应该是最后一个字符。