我有两个以制表符分隔的列,我想根据公共列进行合并。 例如:
文件1:
abandoning 0 V
abandonment 0 N
abandonments 0 N
abandons 0 V
abducted 0 V
abduction 0 N
文件2:
abandonment
abducted
abduction
abound
abounds
abundance
abundant
accessable
如果信息不可用,我想将这些文件合并到第三个空值的文件中。
文件3(所需结果):
abandoning 0 V
abandonment 0 N
abandonments 0 N
abandons 0 V
abducted 0 V
abduction 0 N
abound
abounds
abundance
abundant
accessable
我一直在寻找here和here以及here。 到目前为止,我所看到的最接近的是:
awk '{a[$1]=a[$1] FS $2} END {for (i in a) print i a[i]}' OrigFile.txt ToMerge.txt | sort > Merged_Dict.txt
但是,结果不包括第三列信息。 我得到的结果是:
abandoning 0
abandonment 0
abandonments 0
abandons 0
abducted 0
abduction 0
abound
abounds
abundance
abundant
accessable
关于我哪里出错的任何提示?
答案 0 :(得分:1)
您可以执行此操作awk
但如果您的文件已经排序,则可以使用此工具
$ join -a1 -a2 file1 file2
abandoning 0 V
abandonment 0 N
abandonments 0 N
abandons 0 V
abducted 0 V
abduction 0 N
abound
abounds
abundance
abundant
accessable
这是awk
解决方案
$ awk 'NR==FNR{a[$0];next} $1 in a{delete a[$1]}1; END{for(k in a) print k}' file2 file1 |
sort