Текстовый редактор (regex?) Трюк для интерпретации строки даты - PullRequest
2 голосов
/ 08 декабря 2011

Возьми это: 20120204235900

Это означает: 2012 02 04 23:59:00 или 4 февраля 2012 года в 23: 59: 00

Ну, у меня их тысячи, и я хотел бы изменить их на: 2012/02/04 23:59:00, например.

Я знаю, что могу сделать программу на Java, но должен быть простой способ сделать это с помощью текстового редактора.

Есть идеи?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 08 декабря 2011

В Notepad ++ вы можете это сделать:

([12]\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)

Я проверяю в начале на 1 или 2, чтобы немного проверить дату, если не нужно, тогда просто замените [12] на \d

и заменить на

\1/\2/\3 \4:\5:\6

Чтобы превратить «20120204235900» в «2012 02 04 23:59:00»

Хитрость заключается в доступе к подматчам вскобки с \1 (называемые обратными ссылками).Таким образом, группа 1 - это содержимое первой пары скобок в \2 совпадении со второй парой скобок.

При этом не проблема переупорядочить подспаривания, но заменить 02с February потребуется более сложная логика.Я думаю, что это невозможно в редакторе.

Примечание. Это всего лишь проверка 14 цифр, начинающихся с 1 или 2, поэтому он не проверяет, является ли последовательность цифр действительной датой / временем!

1 голос
/ 08 декабря 2011

Вы можете использовать sed (Stream EDitor), который обычно доступен в любой системе * nix.Этот лайнер должен работать:

sed -e "s/^\([0-9]\{4\}\)\([0-1][0-9]\)\([0-3][0-9]\)\([0-2][0-9]\)\([0-6][0-9]\)\([0-6][0-9]\)/\1\/\2\/\3 \4:\5:\6/g" <filename>
1 голос
/ 08 декабря 2011

Я бы использовал Блокнот ++.

Просто используйте регулярное выражение и замените его следующим образом:

([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])([0-9][0-9])

и замените его на

\1/\2/\3 \4:\5:\6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...