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

标签 bash unix shell text

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

xxxx aa whatever
yyyy bb whatever
zzzz aa whatever

我想把它分成 2 个文件,包含:

首先:

xxxx aa whatever
zzzz aa whatever

第二个:

yyyy bb whatever

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

当然我可以写一个程序来做,但我想知道是否有任何现成的工具可以做这样的事情?

抱歉,我没有提到它,因为我认为它很明显 - 不同“单词”的数量是巨大的。我们正在谈论其中至少 10000 个。 IE。任何基于手头单词枚举的解决方案都行不通。

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

最佳答案

这将创建名为 output.aaoutput.bb 等的文件:

awk '{print >> "output." $2}' input.file

关于bash - 根据内容将输入拆分为多个输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4217399/

相关文章:

bash - 如何在 Perl CGI 脚本中从用户的 .bashrc 获取和使用用户的 TZ 设置?

linux - 在 linux 和 mac 机器上通过 ssh 登录运行 GNU Parallel

unix - ssh远程变量分配?

linux - 使用 shell 脚本检查文件是否为 jpeg 格式

bash - 当第一个参数是 Bash 中的数组时访问第二个 func 参数

linux - 为什么这个变量的一部分在与字符串组合时会被替换?

bash - shell 中文件的一列中的唯一单词数

bash - "2<&1"重定向在 Bourne shell 中有什么作用?

linux - linux执行ls -l命令第一行 "Total"是什么意思?

oracle - DBCA 无法以 root 身份运行