Linux中的精确grep -f命令

时间:2013-05-23 05:05:31

标签: linux shell unix grep

我在Linux中有2个txt文件。

A.txt内容(每行包含一个数字):

1
2
3

B.txt内容(每行包含一个数字):

1
2
3
10
20
30

grep -f A.txt B.txt结果如下:

1
2
3
10
20
30

有没有办法以这种方式grep我只得到完全匹配,即不是10,20,30?

提前致谢

4 个答案:

答案 0 :(得分:12)

要完全匹配,请使用-x开关

grep -x -f A.txt B.txt 

编辑:如果您不想要grep的正则表达式功能并且需要将搜索模式视为固定字符串,请使用-F切换为:

grep -xF -f A.txt B.txt

答案 1 :(得分:4)

正如anubhava所指出的那样,grep -x将与整条线相匹配。还有另一个用于匹配单词的开关-w。因此,如果grep -wf A.txt B.txt中的字词与A.txt中的字词匹配,则B.txt会显示匹配项

答案 2 :(得分:3)

尝试添加-w标记:

grep -wf A.txt B.txt

这将为您提供以下精确结果: 1 2 3

由于

答案 3 :(得分:-1)

您可以尝试识别包含不同内容的文件名

  # cat a.txt
  1
  2
  3
  # cat b.txt
  1
  2
  3
  10
  20
  30
  # grep -L a.txt b.txt
  b.txt