我在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?
提前致谢
答案 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