2016-12-16 43 views
0

使用grep的兩個文件Extratcing條目我有兩個文本文件如下:在linux

file_1: 
12567 1e-3 
4567 1e-5 
189 22e-4 
8743 .365 
3456 1e-9 

file_2: 
BO:0012567 
BO:0084567 
BO:0004567 
BO:0001890 
BO:0000189 
BO:0007812 
BO:0008743 
BO:0134568 
BO:0003456 
BO:0006789 

我想提取匹配file_1的第一列的確切項,其中file_2條目。這是我所希望輸出

output 
BO:0012567 1e-3 
BO:0004567 1e-5 
BO:0000189 22e-4 
BO:0008743 .365 
BO:0003456 1e-9 

我試圖在Linux grep -f file_1 file_2 > output.txt但它獲取所有既完善和部分匹配的條目。我只需要那些完全匹配的條目,而不需要file_2中的任何數字前導或尾隨。請引導我。 在此先感謝

回答

5

awk來救援!

$ awk 'NR==FNR {a[$1]=$2; next} 
     $2+0 in a {print $1 FS $2,a[$2+0]}' file1 FS=: file2 

BO:0012567 1e-3 
BO:0004567 1e-5 
BO:0000189 22e-4 
BO:0008743 .365 
BO:0003456 1e-9 
1

另一個用於AWK:

$ awk ' 
    NR==FNR { a[$1]=$2; next } 
    (b=$0) && sub(/.*:0*/,"") && ($0 in a) { print b, a[$0] } 
' file1 file2 
BO:0012567 1e-3 
BO:0004567 1e-5 
BO:0000189 22e-4 
BO:0008743 .365 
BO:0003456 1e-9