我有一个由316125000行组成的大文件.该文件由112500个数据块组成,每个数据块有2810行.
我需要减小文件的大小,所以我想留下第1个,第10个,第20个,第112490个和第112450个数据块,并删除所有其他数据块.结果这将给我11250个数据块.
这意味着我想要删除每个2811~28100行,并留下每1~2810和28101~30910 ....行.
我在考虑awk,sed或grep,但哪一个更快,我怎么能实现这一点?我知道如何使用awk和NR删除每一行或第三行,但我不知道如何重复删除大块行.
谢谢
最好,
沿着这些方向的东西可能会起作用:
awk 'int((NR - 1) / 2810) % 10 == 0' <infile >outfile
Run Code Online (Sandbox Code Playgroud)
也就是说,int((NR - 1) / 2810)给出当前行(NR)的2810行的块的(从零开始)数,并且如果该块号的剩余部分除以10是0(% 10 == 0)则打印该行.这应该导致每10个块被打印,包括第一个块(块号0).