为什么一旦有空行,grep -F -f无法正常工作?

时间:2016-01-23 08:26:46

标签: grep

有文件a和b,想找到公共线和差异线。

➜  ~  cat a <(echo) b     
1
2
3
4
5

1
2
a
4
5
#find common lines
➜  ~  grep -F -f a b
1
2
4
5
#find b-a
➜  ~  grep -F -v -f a b
a

一切正常,但是当一个文件中有空行时,grep无效,请参阅下面的

# add an empty line in file a
➜  ~  cat a
1

2
3
4
5
# content a is not common
➜  ~  grep -F -f a b   
1
2
a
4
5
# b-a is nothing
➜  ~  grep -F -v -f a b

为什么会这样,为什么一旦有空行,grep无法正常工作?

此外,使用grep查找常见元素还有另一个问题,例如

➜  ~  cat a <(echo) b
1
2
3
4
5
6

1
2
a
4
5
6_id

➜  ~  grep -F -f a b
1
2
4
5
6_id

1 个答案:

答案 0 :(得分:1)

你可以使用comm和diff而不是grep吗?

查找常用行使用:

comm -12 a b

找到差异线:

diff a b