我有两个文件:file1.txt和file2.txt
#file1.txt
xap1
NM_121
abc4
xxx0
uvw
#file2.txt
A123 001 xap1 mmmmm
B123 xxx0 nnnnn
C123 003 yyy1 ppppp
D123 004 zzz1 NM_121
E123 005 abc4 llllll
F123 jjjj www
我想要以下输出基于文件1的列1与文件2的列3和列4的匹配,从文件2获取列2并打印两者:
#file3.txt
xap1 001
NM_121 004
abc4 005
xxx0 NA
uvw NA
$ cat tst.awk
BEGIN { FS=OFS="\t" }
NR==FNR {
map[$3] = map[$4] = ($2 == "" ? "NA1" : $2)
next
}
{ print $1, ($1 in map ? map[$1] : "NA2") }
$ awk -f tst.awk file2 file1
xap1 001
NM_121 004
abc4 005
xxx0 NA1
我使用了2个不同的NA值来区分$ 1在文件2中存在但条目为空的情况(例如xxx0)与在file2中不存在$ 1的情况,例如foobar:
$ cat file1
xap1
NM_121
abc4
xxx0
foobar
$ awk -f tst.awk file2 file1
xap1 001
NM_121 004
abc4 005
xxx0 NA1
foobar NA2
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。