7

我在 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

4 回答 4

13

对于完全匹配使用-x开关

grep -x -f A.txt B.txt 

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

grep -xF -f A.txt B.txt
于 2013-05-23T05:07:56.110 回答
4

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

于 2013-05-23T05:13:27.200 回答
4

尝试添加-w标志:

grep -wf A.txt B.txt

这将为您提供准确的结果,低于:1 2 3

谢谢

于 2015-06-02T21:38:00.807 回答
-1

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

  # cat a.txt
  1
  2
  3
  # cat b.txt
  1
  2
  3
  10
  20
  30
  # grep -L a.txt b.txt
  b.txt
于 2013-10-13T08:10:09.517 回答