假设我有两个相对较大的制表符分隔文件 file1.txt、file2.txt。
file1.txt
id\tcity\tcar\ttype\tmodel
file2.txt
id\tname\trating
让我们假设 file1.txt 有 2000 个唯一 id,因此有 2000 个唯一行,而 file2.txt 只有 1000 个唯一行,因此有 1000 个唯一 id。有没有办法合并两个表?
情况1.通过file1.txt中的id合并它们,当file2.txt中没有id时,将填写NA。
案例2。按file2.txt中的id合并它们,此时仅将file2.txt中的id与file1.txt和file2.txt中的字段一起打印出来。
注意:合并的新文件也应该是制表符分隔的文件,并带有头文件。
笔记2。我也很感激有关在没有标题时如何执行此操作的建议。
Thanks!
join -j 1 <(sort file1.txt) <(sort file2.txt)
您的“案例 2”方法是否仅使用标准 UNIX 工具?当然,如果文件已排序,您可以放弃排序。
如果您包含标题,那么您might依靠数字 id 将连接的标头排序到顶部:
join -j 1 <(sort file1.txt) <(sort file2.txt) | sort -n
With
-
文件1.txt
id city car type model
1 york subaru impreza king
2 kampala toyota corolla sissy
3 luzern chrysler gravity falcon
-
文件2.txt
id name rating
3 zanzini PG
2 tara X
-
output:
id city car type model name rating
2 kampala toyota corolla sissy tara X
3 luzern chrysler gravity falcon zanzini PG
PS要保留 TAB 分隔符,请传递-t
option:
join -t' ' ...
It's kind of hard to show on SO that ' ' contained a TAB character. Type it with ^VTAB (e.g. in bash)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)