首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >合并/联接两个表快速linux命令行

合并/联接两个表快速linux命令行
EN

Stack Overflow用户
提问于 2012-11-09 08:23:08
回答 2查看 18.1K关注 0票数 4

假设我有两个相对较大的以制表符分隔的文件file1.txt,file2.txt。

代码语言:javascript
运行
复制
file1.txt
id\tcity\tcar\ttype\tmodel

file2.txt 
id\tname\trating

假设file1.txt有2000个唯一的ids,因此有2000个唯一的行,而file2.txt只有1000个唯一的行,因此有1000个唯一的ids。有没有办法合并这两个表?

情况1.通过file1.txt中的id合并它们,当file2.txt中没有id时,将填充NAs。

Case2。在file2.txt中通过id合并它们,其中只有file2.txt中的id将与file1.txt和file2.txt中的字段一起打印出来。

注意:合并的新文件也应该是制表符分隔的文件,以及头文件。Note2。我也希望在没有标题的情况下能给出一些建议。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2012-11-09 23:52:08

在第一种情况下,这对我很有效:

join -t $'\t' -1 1 -2 1 -a 1 -a 2 <(sort fileone.txt) <(sort filetwo.txt) | sort -n -t $'\t' > filethree.txt

然后:

awk '{if(NF+0<7) printf "%s\tNA\tNA\n", $0; else print $0}' filethree.txt

票数 1
EN

Stack Overflow用户

发布于 2012-11-09 08:40:45

试着这样做:

代码语言:javascript
运行
复制
perl -lane '
    END{print "$_$h{$_}" for sort keys %h}
    $h{$F[0]} .= "\t" .  join "\t", @F[1..$#F];
' file1.txt file2.txt

此脚本连接ids (第一列)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13300271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档