Могу ли я конвертировать и заменять unix-файлы, хранящиеся в файле с форматом iso 8601?

Я пробовал различные решения, предлагаемые в вопросе о том, какая шахта представляется дубликатом. Некоторые из них фактически не конвертировали время, один из них преобразовал время, но год был неправильным, и он не заменил существующее значение в файле, он добавил новый столбец для вывода. Ответ, который я принял ниже, удовлетворил мои потребности.

Извините, если это дубликат, я много раз искал и не нашел вопросов, соответствующих моей ситуации. Я часто использую Linux, но мои «программирующие» навыки ограничены простыми сценариями оболочки.

У меня есть файл csv со столбцом штампов даты / времени, написанных в формате эпохи (т.е. Unix). См. Ниже пример. Я хотел бы преобразовать и заменить время Unix на формат ISO 8601.

Пример существующего вывода:

foo, 1439856000000000000, foo, foo foo, 1439856360000000000, foo, foo foo, 1439856720000000000, foo, foo foo, 1439857080000000000, foo, foo 

Пример желаемого вывода:

 foo, YYYY-MM-DD HH:MM:SS.nnnnnnnnn, foo, foo foo, YYYY-MM-DD HH:MM:SS.nnnnnnnnn, foo, foo foo, YYYY-MM-DD HH:MM:SS.nnnnnnnnn, foo, foo foo, YYYY-MM-DD HH:MM:SS.nnnnnnnnn, foo, foo 

Я бы использовал perl :

 perl -MPOSIX -pe 's{\b\d{10}(?=\d{9}\b)}{ strftime("%Y-%m-%d %T.", localtime $&)}ge' 

(здесь, давая время по местному времени, используйте gmtime вместо localtime для GMT)