Chtěl bych provést následující pomocí skriptu shell:(pro jednoduchost používám stejná data pro INPUT. V reálném případě se data mění se štítkem smyčky jj)
#!/bin/sh
for jj in `seq 100`; do
cat INPUT.file >> OUTPUT.file
done
To je však velmi neefektivní, protože otevírání a zavírání souboru probíhá ve smyčce. Když je velikost souboru INPUT.file velká, bude tento kód velmi pomalý. Zajímalo by mě tedy, zda existuje způsob, jak mít/vytvořit vyrovnávací paměť, jako je vytvoření předem alokované proměnné v C.
Přijatá odpověď:
Díky odpovědi Stéphana Chazelase na „Proč je takový rozdíl v době provedení echa a kočky?“, může být odpověď muru trochu vylepšena voláním cat
pouze jednou (nicméně toto „málo“ množství se může stát hodně pro velká data a četné opakování smyček; v mém systému tento skript zabere ~75 % času, který zabere skript s smyčkou):
#!/bin/sh
yes INPUT.file | head -100 | xargs cat >> OUTPUT.file