这个问题类似于Splitting text files based on a regular expression,但不完全相同。我的问题是我不想将它拆分为特定数量的文件,但我实际上想根据匹配的数量来拆分它。例如:我有一个 457 MB 的文件,并试图将其拆分为更小的文件。这是目前的工作:
csplit -z Scan.nessus /\<ReportHost/ '{*}'
但是,这为我创建了大约 61.5k 个文件,因为我在这个 457MB 文件中有大量这些<ReportHost
条目。最终,我想按每 50 个条目而不是每个条目来分解它。
有没有办法修改它来实现这一点?我在某种程度上尝试在 Ruby 中执行此操作,但尝试使用 Nokogiri 解析文件时似乎最大化了 VM 的内存。
重用
awk
- 方法运行方式
处理时不删除旧文件的问题仍然存在。
对于零填充的输出文件,您可以使用
和 BEGIN 块中的“part_0000”。然后希望不要超过10,000个文件。或者事先检查您期望的文件数量。