我想使用 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 中创建一个预先分配的变量。
感谢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)