linux中基于内容和行数拆分文件
我有这样的文本文件,有超过1200万行linux中基于内容和行数拆分文件,linux,file,split,command,Linux,File,Split,Command,我有这样的文本文件,有超过1200万行 22 start of first batch 33 some more text 2 55 some data 1 66 more data 1 55 some data 2 66 more data 2 99 end of first batch ... 22 start of Nth batch 33 some more text N 55 some data N 66 more data N 55 some data N 66 more data
22 start of first batch
33 some more text 2
55 some data 1
66 more data 1
55 some data 2
66 more data 2
99 end of first batch
...
22 start of Nth batch
33 some more text N
55 some data N
66 more data N
55 some data N
66 more data N
99 end of Nth batch
在此文本文件中,有多个批次。每个批中还有多个事务。每批最后一笔交易为99笔。
我想将此文件拆分为多个文件,但有以下限制:
这可以在linux中通过单行命令完成吗?除了使用
csplit
之外,请使用awk。将输出文件名存储在变量中。写入输出并计算行数。当您匹配^99
并且输出超过100000行时,请在输出文件名中增加一个计数器。为什么要将重点放在一行上?我认为用你喜欢的语言写一个漂亮的小脚本要快得多;而且会更容易阅读和维护。。。写下300列复杂的一行代码3分钟后没有人理解它的意义是什么?我试图从java调用这个linux命令。java中的文件拆分将非常耗时。因此,我有一个java代码,它将首先通过运行系统命令拆分文件,然后并行处理每个文件。这就是为什么我想在一行中做这件事。不确定是否有其他方法。“java中的文件拆分太耗时了。”那么您就做错了。除了使用csplit
,请使用awk。将输出文件名存储在变量中。写入输出并计算行数。当您匹配^99
并且输出超过100000行时,请在输出文件名中增加一个计数器。为什么要将重点放在一行上?我认为用你喜欢的语言写一个漂亮的小脚本要快得多;而且会更容易阅读和维护。。。写下300列复杂的一行代码3分钟后没有人理解它的意义是什么?我试图从java调用这个linux命令。java中的文件拆分将非常耗时。因此,我有一个java代码,它将首先通过运行系统命令拆分文件,然后并行处理每个文件。这就是为什么我想在一行中做这件事。不确定是否还有其他方法。“用java进行文件拆分太耗时了。”那么你就做错了。