如何在shell脚本中将数据附加到缓冲区?

Xia*_*ang 4 shell buffer cat

我想使用 shell 脚本执行以下操作:(为简单起见,我对 INPUT 使用相同的数据。在实际情况下,数据随循环标签 jj 发生变化)

#!/bin/sh
for jj in `seq 100`; do
    cat INPUT.file >> OUTPUT.file
done
Run Code Online (Sandbox Code Playgroud)

然而,这是非常低效的,因为打开和关闭文件都在循环中。当 INPUT.file 的大小很大时,这段代码会很慢。所以我想知道是否有办法拥有/创建一个缓冲区,比如在 C 中创建一个预先分配的变量。

Moh*_*mad 6

感谢Stéphane Chazelas“为什么 echo 和 cat 的执行时间有如此大的差异?”的回答muru的答案可能通过cat只调用一次而有所改善(但是,对于大数据和大量循环迭代,这个“一点”量可能会变得很多;在我的系统上,这个脚本需要大约 75% 的时间来完成循环脚本需要):

#!/bin/sh
yes INPUT.file | head -100 | xargs cat >> OUTPUT.file
Run Code Online (Sandbox Code Playgroud)