2015-04-15 51 views
1

我有一個文件中的一個科拉姆像這樣的字符串列表:如何從一個文件,而無需解壓的grep精確匹配-w

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  ./.  ./. 

在這種情況下,I'm等待完全匹配的是文件A中的字符串輸出,看起來像這樣:

12  0/0  0/0  1/1  ./. 
1234 1/1  0/1  ./.  0/0 

我已經使用grep -wf A B,它工作完美,但問題是,我的真實文件是非常重的,並且這個過程非常昂貴。有人有任何不同的想法,以獲得相同的結果,但使用其他命令行?

+0

是否'grep的-wFf一個B'運行得更快? (我懷疑這可能是因爲它使用固定字符串而不是正則匹配) – Wintermute

+0

是的!它跑得更快!兩個答案都可以,非常感謝你! – user2820398

回答

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