Вы можете прокомментировать, как это работает? Это хорошо с примером, но когда я ставлю более длинную строку с несколькими датами, это как-то дает 01.01.1970 в конце строки. Хотелось бы, чтобы это изменило формат даты для столбца с номером 12. а после столбца 12 есть другие 10 столбцов. Даты должны быть изменены в столбцах 12 и 15. Другие поля / столбцы не должны быть изменены.
Марис
Работает как шарм! Только я отделился для своего $ i (11) и второй раз, когда я взял свой $ i (14), не работал вместе 11..14, Время разбора ошибки в /usr/lib/perl/5.14/Time/Piece.pm строка 469, <> строка 1. :)
Эта команда разделяет поля с разделителями ;и .. Затем он изменяет последнее поле следующим образом: если оно меньше или равно 13, оно преобразуется в 20last_field, в противном случае оно преобразуется в 19last_filed, а затем печатает поля в том же порядке, что и раньше, с теми же разделителями, включая модифицированное шестое поле (теперь называется x).
Это также может быть хорошим решением, но проблема в том, что поля не могут быть разделены с помощью "." потому что иногда может быть некоторая информация с точкой до $ 6, и тогда она будет засчитана неправильно.
Это можно сделать с помощью
awk
:Эта команда разделяет поля с разделителями
;
и.
. Затем он изменяет последнее поле следующим образом: если оно меньше или равно 13, оно преобразуется в20last_field
, в противном случае оно преобразуется в19last_filed
, а затем печатает поля в том же порядке, что и раньше, с теми же разделителями, включая модифицированное шестое поле (теперь называетсяx
).источник
Использование
dconv
из dateutils :производит именно тот результат, который вы хотите.
источник