Вы столкнулись с большим компромиссом во времени и дисковым пространством.Я предполагаю, что вы пытаетесь сэкономить место, добавляя записи в конец ваших файлов $ {name} .gz.@sehe комментарии и код, безусловно, стоит рассмотреть.
В любом случае ваше время более ценно, чем 3 ГБ дискового пространства.Почему бы не попробовать
zcat large_file.gz \
| awk '-F\t' {
name=$1; string=$2; outFile=name".txt"
print name "\t" string >> outFile
# close( outFile)
}'
echo *.txt | xargs gzip -9
Возможно, вам нужно раскомментировать #close (outFile).Xargs включен, потому что я предполагаю, что у вас будет создано более 1000 имен файлов.Даже если вы этого не сделаете, использование этой техники не помешает.
Обратите внимание, что в этом коде используются данные, разделенные символом табуляции, при необходимости измените значение аргумента arg для -F и "\ t" в задании печатичтобы получить необходимый вам разделитель полей.
У меня нет времени, чтобы проверить это.Если вам нравится эта идея и вы застряли, пожалуйста, опубликуйте небольшие образцы данных, ожидаемый вывод и сообщения об ошибках, которые вы получаете.
Надеюсь, это поможет.