2016-12-16 9 views
0

にはgrepで2つのファイルを使用してエントリをExtratcing:は、次のように私は2つのテキストファイルを持っているの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 
関連する問題