代码之家  ›  专栏  ›  技术社区  ›  user80168

根据内容将输入拆分为多个输出?

  •  3
  • user80168  · 技术社区  · 14 年前

    假设有一个文件如下所示:

    xxxx aa whatever
    yyyy bb whatever
    zzzz aa whatever
    

    我想把它分成两个文件,其中包括:

    第一:

    xxxx aa whatever
    zzzz aa whatever
    

    第二个:

    yyyy bb whatever
    

    例如,我希望根据行中的某个值对行进行分组(规则可以是:用空格分隔的第二个单词),但不要对组中的行重新排序。

    当然,我可以编写一个程序来完成它,但是我想知道是否有现成的工具可以完成这样的工作?

    抱歉,我没有提到,因为我认为这很明显——不同的“单词”数量是巨大的。我们谈论的至少有10000个。也就是说,任何基于手前单词枚举的解决方案都不起作用。

    而且-我不太喜欢多通拆分-问题文件通常很大。

    2 回复  |  直到 14 年前
        1
  •  6
  •   John Kugelman dbush    14 年前

    这将创建名为 output.aa , output.bb 等等:

    awk '{print >> "output." $2}' input.file
    
        2
  •  1
  •   Ulrich Schwarz    14 年前

    好吧,你可以做一个grep来得到匹配的行,用grep-v来得到不匹配的行。

    嗯,你可以的 sort -f" " -s -k 2,2 但那是O(n log n)。