【问题标题】:unix utility join and output fieldsunix 实用程序连接和输出字段
【发布时间】:2013-03-03 19:46:36
【问题描述】:

我想输出排序后的 file1 中的所有字段,这些字段可以通过 file1 的 field1 和 file2 的 field2 连接。如果 file1 有三个字段,那么我可以执行以下操作:

  join -1 $field1 -2 $field2 -o 1.1,1.2,1.3 $file1 $file2

但是,如果 file1 有数百或数千个字段,我该怎么办?我目前的一种解决方法是 Python,另一种方法是对两个包含来自 file1 和 file2 的连接字段值的排序文件执行 comm -12,然​​后将 file1 与 comm -12 生成的文件连接起来。

这可能是文件1 输入

 1 A
 2 B
 3 C

还有file2 输入

 3 D
 4 E
 5 F

我如何获得这个输出(第 2 列中的共享值):

 C

不这样做:

 join -1 1 -2 1 -o 1.2 $file1 $file2

【问题讨论】:

  • 我可以用python写。最现代的unix系统有python解释器。
  • 好吧,也许我会坚持我的 Python 解决方案。我只是惊讶于 unix 实用程序连接不允许您从 file1 或 file2 打印所有字段。这似乎是一项非常明显的频繁任务。

标签: unix join


【解决方案1】:

我遇到了这个answer,它使用了一种有用的语法。 n 下面是列数。

join -1 1 -2 1 -o"$(echo 1.{2..n})" $file1 $file2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2013-05-29
    • 2012-04-10
    • 1970-01-01
    相关资源
    最近更新 更多