Да, прежде чем кто-то вскочит и нападет на меня вилой, это двойной вопрос, но другие не работают для меня, поэтому я задаю его сам сейчас.
У меня есть файл CSV, у которого есть даты где-то в каждой записи. Дополнительная трудность при конвертации заключается в том, что иногда даты будут иметь однозначные числа в течение нескольких дней. Пример записи:
abc,0,2,-2,3-16-1994
xyz,1,2,3,10-09-1994
Я хочу, чтобы что-то, предпочтительно sed, конвертировало эти записи данных так:
abc,0,2,-2,1994-03-16
xyz,1,2,3,1994-09-10
Я пробовал:
sed 's|(..)-(..)-(....)|\3-\2-\1|'
Но это дает ошибку, и она на самом деле не охватывает однодисковые проблемы дня.
Я также попробовал:
awk -F - '{print $3$2$1}'
Это на самом деле имеет некоторый желаемый эффект, но опять же не совсем. Команда awk преобразует его, но только месяц и год, и вместо того, чтобы поставить дату назад, где она была, она помещает месяц и год начала строки, оставляя часть дня, где бы она ни находилась.
Любая помощь будет потрясающей!
Заранее спасибо.
редактировать
В комментариях было правильно указано, что я допустил ошибку в своих примерах. Даты должны быть:
abc,0,2,-2,16-03-1994
xyz,1,2,3,2-05-1994
С желаемым результатом:
abc,0,2,-2,1994-03-16
xyz,1,2,3,1994-05-02
Извините ребята.