cmo*_*cmo 11 unix split file chunking
在每第N次出现分隔符后,是否存在将文本文件拆分为多个块/块的单行内容?
示例:下面的分隔符是"+"
entry 1
some more
+
entry 2
some more
even more
+
entry 3
some more
+
entry 4
some more
+
...
Run Code Online (Sandbox Code Playgroud)
有几百万个条目,因此每次出现分隔符"+"时都要分开是一个坏主意.我想分开,例如,每隔50,000个分隔符"+"实例.
Unix命令"split"和"csplit"似乎没有这样做......
Fat*_*ror 13
使用awk你可以:
awk '/^\+$/ { delim++ } { file = sprintf("chunk%s.txt", int(delim / 50000)); print >> file; }' < input.txt
Run Code Online (Sandbox Code Playgroud)
更新:
要不包括分隔符,请尝试以下操作:
awk '/^\+$/ { if(++delim % 50000 == 0) { next } } { file = sprintf("chunk%s.txt", int(delim / 50000)); print > file; }' < input.txt
Run Code Online (Sandbox Code Playgroud)
该next关键字使awk暂停此记录的处理规则,并前进到下一个(行).我也改变了>>,>因为如果你不止一次运行它,你可能不想附加旧的块文件.