У меня есть сценарий, который читается в строках из файла, берет первый столбец каждой строки и присоединяется к файлу с именем этой строки (я пытаюсь написать много разных файлов с именем $ id.txt).Могу ли я сделать этот скрипт bash, который пишет в несколько файлов, запускается быстрее?
Возможно ли иметь скрипт, который делает что-либо быстрее, чем это (на одноузловой машине)? Обратите внимание, что я использую read -r
и id="$(echo $line | awk '{print $1}')"
, потому что у меня есть поля с разделителями полей, и в некоторых полях, которые я хочу сохранить, есть определенные символы, такие как обратные косые черты.
while read -r line
do
id="$(echo $line | awk '{print $1}')"
echo "$line" >> $id.txt
done < $1
Некоторые характеристики моего ввода:
- Выходные
$id.txt
файлы не так велико, как правило, несколько сотен строк в среднем и до нескольких тысяч строк - на идентификаторы фактически уже сортируют и линии входят в непрерывных блоков, то есть:
abc ... abc ... def ... def ... def ... def ... ghi ... ghi ...
Вы пишете каждую строку по одному; почему бы не буферизировать их и написать большой блок? –