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



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

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

我如何获取它并每 1000 个匹配项打印到一个新文件?

有没有其他方法可以做到这一点? 我查看了拆分和拆分,但"----"行无法预测地发生,所以我必须匹配它们,然后拆分

匹配计数。

我希望将输出文件到每个文件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......

相关内容

  • 没有找到相关文章

最新更新