加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

合并/加入两个表快速linux命令行

发布时间:2020-12-14 01:22:40 所属栏目:Linux 来源:网络整理
导读:假设我有两个相对较大的制表符分隔文件file1.txt,file2.txt. file1.txtidtcitytcarttypetmodelfile2.txt idtnametrating 让我们假设file1.txt有2000个唯一ID,因此有2000个唯一行,而file2.txt只有1000个唯一行,因此有1000个唯一ID.有没有办法合并这两个
假设我有两个相对较大的制表符分隔文件file1.txt,file2.txt.

file1.txt
idtcitytcarttypetmodel

file2.txt 
idtnametrating

让我们假设file1.txt有2000个唯一ID,因此有2000个唯一行,而file2.txt只有1000个唯一行,因此有1000个唯一ID.有没有办法合并这两个表?

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

案例2.在file2.txt中通过id合并它们,其中只有file2.txt中的id将打印出file1.txt和file2.txt中的字段.

注意:合并的新文件也应该是制表符分隔的文件,也带有头文件.
笔记2.我也很欣赏在没有标题的情况下如何做到这一点的建议.

谢谢!

解决方法

join -j 1 <(sort file1.txt) <(sort file2.txt)

您的“案例2”是否只使用标准的unix工具.当然,如果文件已排序,您可以删除排序.

如果您包含标题,则可能依赖于数字ID来将连接标题排序到顶部:

join -j 1 <(sort file1.txt) <(sort file2.txt) | sort -n

> file1.txt

id  city    car type    model
1   york    subaru  impreza king
2   kampala toyota  corolla sissy
3   luzern  chrysler    gravity falcon

> file2.txt

id  name    rating
3   zanzini PG
2   tara    X

>输出:

id  city    car type    model   name    rating
2   kampala toyota  corolla sissy   tara    X
3   luzern  chrysler    gravity falcon  zanzini PG

PS要保留TAB分隔符,请传递-t选项:

join -t'    ' ...

在SO上显示“包含TAB字符”很难.用^ VTAB键入它(例如在bash中)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读