У меня есть каталог, содержащий несколько сотен публикаций в блогах с frontmatter YAMLКаждый блок frontmatter имеет строку, начинающуюся с date:
, за которой следует дата в формате ГГГГ-ММ-ДД.За некоторыми датами следует время, то есть 21:09.Некоторые даты заключены в одинарные кавычки, например, «ГГГГ-ММ-ДД».
Я хотел бы преобразовать все строки date:
в следующий формат: date: 'YYYY-MM-DD'
.
Некоторые примерные строки даты:
date: '2009-11-23'
date: 2013-01-20 20:37
date: 2013-01-21 1:40
У меня есть эта команда:
find . -type file -exec sed -i.bak -e "s/date: (')?([0-9]{4}-[0-9]{1,2}-[0-9]{1,2})(')?( .*)?/date: \"$2\"/g" {} \;
, которая должна создать четыре группы:
- $ 1 начальная цитата, если присутствует
- $ 2 дата
- $ 3 закрывающая кавычка, если присутствует
- $ 4 время, если присутствует
Команда выполняется сошибки не возвращаются, но ни одна из строк даты не изменилась.Я использовал http://rubular.com для проверки шаблона регулярных выражений, который, по-видимому, является правильным.
Для чего стоит использовать macOS, и, следовательно, его варианты find
и sed
.Поскольку я не получаю никаких выходных данных, кроме файла .bak
для каждого файла в каталоге, я не могу определить, работает ли мое регулярное выражение или нет или нет.
Как настроить эту командузаставить его работать?