我们假设有一个看起来像这样的文件:
xxxx aa whatever
yyyy bb whatever
zzzz aa whatever
我想把它分成两个文件,包含:
第一
xxxx aa whatever
zzzz aa whatever
第二
yyyy bb whatever
即。我想根据行中的某些值对行进行分组(规则可以是:第二个单词用空格分隔),但不要对组内的行重新排序。
当然我可以写一个程序来做,但我想知道是否有任何现成的工具可以做这样的事情?
对不起,我没有提到它,因为我认为它非常明显 - 许多不同的“单词”是巨大的。我们谈论的至少有10000个。即基于枚举单词的任何解决方案都不起作用。
而且 - 我不太喜欢多遍分割 - 有问题的文件通常都很大。
答案 0 :(得分:6)
这将创建名为output.aa
,output.bb
等的文件:
awk '{print >> "output." $2}' input.file
答案 1 :(得分:1)
好吧,你可以用grep来获取匹配的行,使用grep -v来获取不匹配的行。
嗯,你可以做sort -f" " -s -k 2,2
,但那是O(n log n)。