gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:58:13 25 4
gpt4 key购买 nike

假设我有两个相对较大的制表符分隔文件 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。有没有办法合并这两个表?

情况一,在file1.txt中按id合并,file2.txt中没有id时填NA。

案例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

  • 文件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
  • 输出:

    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 中)

关于linux - 合并/加入两个表快速 linux 命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13300271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com