Saya ingin melakukan hal berikut menggunakan skrip shell:(untuk kesederhanaan, saya menggunakan data yang sama untuk INPUT. Dalam kasus nyata, data berubah dengan label loop jj)
#!/bin/sh
for jj in `seq 100`; do
cat INPUT.file >> OUTPUT.file
done
Namun, ini sangat tidak efisien karena membuka dan menutup file dalam loop. Ketika ukuran INPUT.file besar, kode ini akan menjadi sangat lambat. Jadi saya bertanya-tanya apakah ada cara untuk memiliki/membuat buffer seperti membuat variabel yang telah dialokasikan sebelumnya di C.
Jawaban yang Diterima:
Berkat jawaban Stéphane Chazelas untuk “Mengapa ada perbedaan waktu eksekusi echo dan cat?”, jawaban muru mungkin sedikit ditingkatkan dengan memanggil cat
hanya sekali (namun, jumlah "sedikit" ini mungkin menjadi banyak untuk data besar dan banyak pengulangan loop; di sistem saya, skrip ini membutuhkan ~75% waktu yang dibutuhkan skrip loop-have):
#!/bin/sh
yes INPUT.file | head -100 | xargs cat >> OUTPUT.file