【问题标题】:What is the easiest way to join 12 columns?加入 12 列的最简单方法是什么?
【发布时间】:2010-10-06 07:47:51
【问题描述】:

我有 12 列,由制表符分隔。我怎样才能并排加入他们?

[已添加] 您还可以告诉我其他方法,如 AWK:越快越好。

【问题讨论】:

  • @UT,你有什么理由不得不使用awk吗?
  • 不,我要最简单的方法。
  • AWK 是电锯,你需要一把面包刀 :-)。试试 cut 代替,它更适合制表符分隔的输入和重新排列/组合列。
  • 为问题添加了一些标签,我希望它们是合适的。

标签: text scripting awk


【解决方案1】:

由于您专门询问了 awk(有更适合该工作的工具),因此以下是第一个解决方案:

awk '{print $1$2$3$4$5$6$7$8$9$10$11$12}'

一个更复杂且可配置的解决方案是:

awk -v lim=12 '{for(x=1;x<lim;x++){printf "%s",$x};print ""}'

如果您不限于 awk,其他可能性是:

tr -d '\011'                     # to combine ALL columns on the line.
cut --output-delimiter='' -f1-12 # more general (1-12 or 3-7 or 1-6,9).

根据您的编辑和 cmets,我建议 cut 是完成这项工作的最佳工具。使用“man cut”、“info cut”或“cut --help”了解更多详情(这取决于您的平台)。

【讨论】:

    【解决方案2】:

    如果您只是使用 awk 连接列,我会使用 'tr' 并删除选项卡

    cat file1 | tr -d '\011'>  file2
    

    【讨论】:

    • 上面的内容不是汽车,它只是删除所有选项卡并保留所有其他字符相同
    • 感谢所有反对票 - 我知道 OP 询问了 awk。但如果有人问如何用锤子敲螺丝,通常值得指出螺丝刀的发明。
    【解决方案3】:

    试试这个:

    {
        print $1$2$3$4$5$6$7$8$9$(10)$(11)$(12)
    }
    

    我不是awk 天才,所以我不知道您是否可以使用某种循环构造。

    【讨论】:

      【解决方案4】:

      嗯,这取决于您选择的编辑器/命令。但总的来说,它归结为什么都没有替换角色。 例如在 vim 中:“:%s/\t//g

      【讨论】:

        【解决方案5】:

        您没有提到您想使用什么工具,但任何文本编辑器都可以将制表符替换为空字符,我想这会起作用,这就是我通常做的。

        【讨论】:

          猜你喜欢
          • 2010-12-16
          • 1970-01-01
          • 1970-01-01
          • 2010-10-06
          • 2019-07-06
          • 1970-01-01
          • 2019-04-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多