我有一个带有一个列的文件A,其中包含如下字符串列表:
12
123
1234
1234567
我想使用文件A中的字符串来grep文件B中包含它们的行,文件B如下所示:
1 0/0 ./. 0/1 0/0
12 0/0 0/0 1/1 ./.
1234 1/1 0/1 ./. 0/0
12345 0/0 0/0 1/1 1/1
123456 1/1 1/1 ./. ./.
在这种情况下,我正在等待一个完全匹配文件A中的字符串的输出,如下所示:
12 0/0 0/0 1/1 ./.
1234 1/1 0/1 ./. 0/0
我使用过grep -wf A B
并且效果很好,但问题是我的真实文件很重,而且过程非常昂贵。有人有任何不同的想法来获得相同的结果,但使用其他命令行?
答案 0 :(得分:2)
您可以使用此awk作为替代方法:
awk 'NR==FNR{a[$1]; next} $1 in a' file1 file2
12 0/0 0/0 1/1 ./.
1234 1/1 0/1 ./. 0/0
<强>解释强>
NR == FNR { # While processing the first file
a[$1] # store the 1st field in array a
next # move to next line
}
$1 in a # while processing the second file
# if 1st field is in array then print it