繁体   English   中英

AWK按分隔符和计数分割文件

[英]AWK split file by separator and count

我有一个大的220mb文件。 该文件按水平行“---”分组。 这是我到目前为止:

    cat test.list | awk -v ORS="" -v RS="-------------------------------------------------------------------------------" '{print $0;}'

如何获取此信息并每1000次匹配打印到一个新文件?

还有另一种方法吗? 我看了分裂和csplit,但是“----”行没有出现可预测的因此我必须匹配它们,然后拆分匹配计数。

我希望输出文件为每个文件1000个匹配的组。

要输出的前1000个记录outputfile0 ,旁边outputfile1等,只是做:

awk 'NR%1000 == 1{ file = "outputfile" i++ } { print > file }' ORS= RS=------ test.list

(请注意,为简单起见,我在RS中截断了破折号。)'

不幸的是,使用多于一个字符的RS值会产生未指定的结果,因此上述情况不是解决方案。 也许像twalberg的解决方案是必需的:

awk '/^----$/ { if(!(c%1000)) count+=1; c+=1; next } 
    {print > ("outputfile"count)}' c=1 count=1

没有经过测试,但这些内容可能有效:

awk 'BEGIN {fileno=1,matchcount=0}
     /^-------/ { if (++matchcount == 1000) { ++fileno; matchcount=0; } }
                { print $0 > "output_file_" fileno }' < test.list

将所有内容放入其中可能会更清晰,比如split.awk并使用awk -f split.awk test.list代替......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM