bash - 将文件拆分为大小大致相等的部分,但考虑到 2 行块
问题描述
我有一个包含数十万行的文件,如下所示:
>something
somethingelse
>something2
somethingelse2
>something3
somethingelse3
>something4
somethingelse4
>something5
somethingelse5
>something6
somethingelse6
>something7
somethingelse7
>something8
somethingelse8
>something9
somethingelse9
>something10
somethingelse10
等等
每 2 行配对,例如,这将被视为文件中的 1 个条目:
>something
somethingelse
我希望能够将其拆分为n
大小大致相等的文件。但是,在拆分时,每个文件应将条目保持在一起:n
拆分部分应包含大致偶数个条目,而不是仅在行上拆分。例如,如果我要尝试将其拆分为大约 4 个文件,我想要类似的内容:
文件第 1 部分
>something
somethingelse
>something2
somethingelse2
>something3
somethingelse3
文件第 2 部分
>something4
somethingelse4
>something5
somethingelse5
>something6
somethingelse6
文件第 3 部分
>something7
somethingelse7
>something8
somethingelse8
文件第 4 部分
>something9
somethingelse9
>something10
somethingelse10
只要文件包含大致相同数量的条目,并且这些条目保持在一起,那么剩下的 2 最终位于哪个文件部分并不重要,所以不是:
文件1:
>something
somethingelse
>something2
文件2:
somethingelse2
>something3
somethingelse3
我考虑过使用该split -l
命令,但据我所知,它仅限于:将此文件拆分为数十万个文件,每个文件仅包含 2 行,或将文件拆分为行数大致相等的部分,但条目可以拆分(第一行在一个部分结束,第二行在另一部分结束)。
有什么简单的方法可以让我忽略使用 bash 命令执行此操作吗?
解决方案
如果我很好地理解您想要实现的目标,您只需要使用split -l
任意偶数行。
如果N
是总行数并且P
是您要创建的零件数,我可能会使用类似的东西:
split -l $((N/P + (N/P) % 2))
where+ (N/P) % 2
确保你得到一个偶数
推荐阅读
- google-chrome - 如何使用 chrome 扩展阻止脚本加载?
- python - 如何读取变量的名称python
- javascript - 在mac上运行离子应用程序时出错
- ruby - 如何在 Ruby 中捕获窗口屏幕截图
- java - 案例中如何使用涉及实例化的switch语句?
- node.js - 在节点 js 中找不到“nd sampleApp”命令
- javascript - 解析器(js)的正则表达式lookbehind替代
- python - 在 for 循环中生成时识别按钮
- puppet - puppet 资源如何在不编译失败的情况下检查 puppetmaster 上的数据源?
- c# - C#如何从IEnumerable中创建一个列表