我有两个名为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
非常感谢您的帮助!!
答案 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中的空最后一行也会在结尾处自行生成一个“不可用”。