Linux中的精确grep-f命令

Linux中的精确grep-f命令,linux,shell,unix,grep,Linux,Shell,Unix,Grep,我在Linux中有2个txt文件 A.txt内容(每行包含一个数字): B.txt内容(每行包含一个数字): grep-f A.txt B.txt结果如下: 1 2 3 10 20 30 有没有办法让我只得到精确的匹配,即不是10、20、30 提前感谢您使用-x开关进行精确匹配 grep -x -f A.txt B.txt 编辑:如果您不想要grep的regex功能,并且需要将搜索模式视为固定字符串,则使用-F开关作为: grep -xF -f A.txt B.txt 正如anubhav

我在Linux中有2个txt文件

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

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

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

1
2
3
10
20
30
有没有办法让我只得到精确的匹配,即不是10、20、30


提前感谢您使用
-x
开关进行精确匹配

grep -x -f A.txt B.txt 
编辑:如果您不想要grep的regex功能,并且需要将搜索模式视为固定字符串,则使用
-F
开关作为:

grep -xF -f A.txt B.txt

正如anubhava所指出的,
grep-x
将匹配整行。还有另一个开关
-w
用于匹配单词。因此,如果
A.txt
中的单词与
B.txt中的单词匹配,则
grep-wf A.txt B.txt
将显示匹配项。您可以尝试识别包含不同内容的文件名

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

尝试添加
-w
标志:

grep-wf A.txt B.txt

这将为您提供准确的结果,具体如下: 1. 2. 三,


谢谢

并添加
-F
以禁用输入中的元字符。例如,
3.14
在没有
-F
aka
fgrep
选项的情况下也会匹配
3124
。@tripleee:非常感谢,我将它添加到我的答案中。@tripleee我想你的意思是3.14也会匹配3214,而不是3124。
grep -xF -f A.txt B.txt
  # cat a.txt
  1
  2
  3
  # cat b.txt
  1
  2
  3
  10
  20
  30
  # grep -L a.txt b.txt
  b.txt