我写了这样一行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
或字符之一开头的行将被忽略(字符类中重复的字符也将被忽略)d
。9
但如果您想忽略以 string 开头的行11,12d9
,则需要grep -v '^11,12d9'
.
*与问题无关,但要记录字符类中]
,^
和字符的使用:-
如果是^
字符:它可以放在任何位置[]
但不能是第一个字符;如果它是第一个字符,它将对该类中的字符起作用。
如果是]
字符:它应该是第一个字符。
如果是-
字符:它应该是最后一个字符。