如果在文件中找不到id,则awk将缺失添加到顺序中
下面的如果在文件中找不到id,则awk将缺失添加到顺序中,awk,Awk,下面的awk将在file2的$2中的file1中查找ID,如果它们匹配,则打印$2。如果在file2(如ARRR和AAAA)中缺少或未找到id,我无法找出如何将其添加到输出中的行中,因为在$3中缺少相同的格式。也就是说,$1中的下一个序列号,$2中的文件1中的id,以及$3中缺少的单词。谢谢:) awk awk -F'\t' 'NR==FNR{A[$1];next}$2 in A' file1 file2 文件1空格分隔 AARS AARS2 AARS2;TMEM151B ARRR AAAS
awk
将在file2
的$2
中的file1
中查找ID,如果它们匹配,则打印$2
。如果在file2
(如ARRR和AAAA)中缺少或未找到id,我无法找出如何将其添加到输出中的行中,因为在$3
中缺少相同的格式。也就是说,$1
中的下一个序列号,$2
中的文件1
中的id,以及$3
中缺少的单词。谢谢:)
awk
awk -F'\t' 'NR==FNR{A[$1];next}$2 in A' file1 file2
文件1空格分隔
AARS
AARS2
AARS2;TMEM151B
ARRR
AAAS
AAAA
AADAC
文件2制表符分隔
1 AARS 100.00
2 AARS2 100.00
3 AARS2;TMEM151B 100.00
4 AAAS 100.00
5 AADAC 100.00
1 AARS 100.00
2 AARS2 100.00
3 AARS2;TMEM151B 100.00
4 AAAS 100.00
5 AADAC 100.00
6 ARRR missing
7 AAAA missing
所需输出制表符分隔
1 AARS 100.00
2 AARS2 100.00
3 AARS2;TMEM151B 100.00
4 AAAS 100.00
5 AADAC 100.00
1 AARS 100.00
2 AARS2 100.00
3 AARS2;TMEM151B 100.00
4 AAAS 100.00
5 AADAC 100.00
6 ARRR missing
7 AAAA missing
awk解决方案:
awk 'NR==FNR{ a[$0]; next }$2 in a{ delete a[$2] }
END{ for(i in a) print ++FNR,i,"missing" }1' file1 OFS='\t' file2
输出:
1 AARS 100.00
2 AARS2 100.00
3 AARS2;TMEM151B 100.00
4 AAAS 100.00
5 AADAC 100.00
6 AAAA missing
7 ARRR missing