Как правильно распарсить логи с помощью bash?
Вот такая штука будет работать примерно со скоростью мегабайт в секунду.cat oldlogfile.log | py -x "', '.join(['='.join((k, datetime.datetime.strptime(v, '%Y-%m-%d %H:%M:%S').strftime('%H:%M:%S.000 +0700 %a %b %d %Y')) if k == 'TIME' else (k, v)) for k, v in ((kv.split('=') for kv in x.split(', ')))])" > newlogfile.log
Измерял так:yes "RESULT=xxxxx, TIME=2020-01-20 18:43:12, HOST=xxxxxxxxxxx, NAME=xxxxxxxx" \
  | pv \
  | py -x "', '.join(['='.join((k, datetime.datetime.strptime(v, '%Y-%m-%d %H:%M:%S').strftime('%H:%M:%S.000 +0700 %a %b %d %Y')) if k == 'TIME' else (k, v)) for k, v in ((kv.split('=') for kv in x.split(', ')))])" \
  > /dev/null
Зато на порядок понятнее и можно по человечески формат подправить.
У Вас на каждую строчку лога - запускается несколько программ/процессов. И выводной файл каждый раз открывается и закрывается. Неудивительно, что это извращение тормозит.
Надо как-то так:
Убираем cat. Всё делает awk.
Функцию "grep -o TIME=..." можно перенести в awk, у него есть хороший инструмент для этого.
Запуск "date" - тоже сделать в awk, распарсить дату ручками.
Ну или хотя бы уберите ">> LOG_new.csv" из цикла - это прекрасно делается снаружи, после "done"; в кр.случае - надо будет взять это дело в скобки.
Вы бы дали пример лога, было бы проще. Хорошо бы с пояснениями.