Linux中的精确grep-f命令
我在Linux中有2个txt文件 A.txt内容(每行包含一个数字): B.txt内容(每行包含一个数字):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
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
akafgrep
选项的情况下也会匹配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