使用Linux中的GREP中的两个文件来说明条目



我有两个文本文件如下:

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

我想提取文件_2的条目,该条目匹配文件_1的第一列的精确条目。这是我所需的输出

 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引导或尾随的数字。请引导我。预先感谢

awk to Rescue!

$ 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

尴尬的另一个:

$ 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

最新更新