我想将大型压缩 CSV 文件拆分为多个较小的 gzip 文件,并在行边界上拆分。
我正在尝试通过管道将 gunzip 传输到 bash 脚本,同时读取 LINE。该脚本写入一个命名管道,后台 gzip 进程正在重新压缩它。每读取一个 X 字符,我都会关闭 FD 并重新启动新的 gzip 进程以进行下一次拆分。
但是在这种情况下,带有 while read LINE 的脚本消耗了 90% 的 cpu,因为 read 在这里效率很低(我知道它会进行一次系统调用来读取 1 个字符)。
关于有效地做到这一点的任何想法?我希望 gzip 消耗大多数 cpu。