从基于另一个文件的文件中提取数据

时间:2014-10-01 05:02:57

标签: awk

我有两个名为file_a和file_b的文件。我想根据file_a的数据从file_b中提取数据。

FILE_A

1kps_2
1tgs
1kp3_1

FILE_B

PDB 1sih AA
PDB 1kps_2 AB
PDB 1kp3_1 CD
PDB 1sjy AA

期望的输出

PDB 1kps_2 AB
    1tgs   not available
PDB 1kp3_1 CD

非常感谢您的帮助!!

2 个答案:

答案 0 :(得分:1)

尝试这个awk one-liner:

awk 'NR==FNR{b[$2]=$0;next}{print $0 in b? b[$0]: $0 " not available"}' fileb filea

答案 1 :(得分:0)

cat file1 | while read aline;do grep $aline file2 || echo $aline not available;done

......如果没有awk,你应该做你想做的事。请注意,这适用于sh(或bash,但它最近有些抨击;)

如果文件很大,那么awk脚本可能/可能更高效。但是,根据文件是否排序,它实际上可能没有任何区别,因为第二部分必须总是grep整个文件2,以确保可能的匹配不在file2中当前位置的“上方”。

file1中的空最后一行也会在结尾处自行生成一个“不可用”。