gpt4 book ai didi

linux - 有没有一种有效的方法来读取 bash 中的行输入?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:20 28 4
gpt4 key购买 nike

我想将大型压缩 CSV 文件拆分为多个较小的 gzip 文件,按行边界拆分。

我正在尝试通过 while read LINE 将 gunzip 传输到 bash 脚本。该脚本写入命名管道,后台 gzip 进程正在重新压缩它。每读取 X 个字符,我就关闭 FD 并为下一次拆分重新启动一个新的 gzip 进程。

但在这种情况下,脚本 while read LINE 消耗了 90% 的 cpu,因为这里的读取效率很低(我知道它会进行一次系统调用以读取 1 个字符)。

有没有想过如何有效地做到这一点?我希望 gzip 占用大部分 cpu。

最佳答案

使用 split-l 选项来指定你想要的行数。使用 --filter 选项 $FILE 是 split 用于输出到文件的名称(并且必须用引号引起来以防止过早地通过 shell 扩展:

zcat doc.gz | split -l 1000 --filter='gzip > $FILE.gz'

如果您需要任何额外的处理,只需写一个脚本,它将接受文件名作为参数并相应地处理标准输入,并使用它代替普通的 gzip

关于linux - 有没有一种有效的方法来读取 bash 中的行输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13767095/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com