У меня есть несколько файлов в каталоге, которые содержат даты в следующем формате:

December 29 19:05:58

Но они различаются в зависимости от даты создания файла.

Есть ли способ выполнить поиск-замену в этих файлах, чтобы заменить даты на даты, которые выглядят так:

December 29 2010 19:05:58

Я на Mac OS X.

РЕДАКТИРОВАТЬ: Чтобы уточнить, любой сценарий будет хорошо, то есть: сценарии sed или shell/ruby.

2 ответа2

1

Я не думаю, что это возможно без мощного текстового редактора или некоторых сценариев.


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

Поиск:

(January|February|March|April|May|June|July|August|September|October|November|December) (\d{1,2}) (\d{2}:\d{2}:\d{2})

Заменить:

$1 $2 2010 $2

В зависимости от количества файлов скрипты будут быстрее. Я бы выбрал такой редактор, как TextMate, если это не слишком много работы - таким образом, вы можете проверить каждую замену перед сохранением.


Для полноты картины:

cat src.txt | sed "s/\([A-Z][a-z]\{1,\} [0-9]\{1,2\}\) \([0-9][0-9]:[0-9][0-9]:[0-9][0-9]\)/\1 2010 \2/g" > dest.txt

Люди, которые регулярно используют sed могут смеяться, мне все равно.

1

Попробуйте это (для OS X замените -r на -E):

sed -r 's/(January|February|March|April|May|June|July|August|September|October|November|December)( [0-9 ][0-9] )(([0-9][0-9]:){2}[0-9][0-9])/\1\22010 \3/'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .