Итак, я просмотрел другие вопросы, и ничего конкретного, похоже, не может мне помочь. У меня есть файл с переменной даты, установленной как mm/dd/yyyy, которую я хотел бы заменить датой.Дата замены Sed
Например:
version.js
//Application Version Information
app_date="7/07/2015";
...
И я хотел бы использовать СЭД, чтобы заменить его. У меня на самом деле есть сценарий оболочки, который заменяет многие вещи в этом файле, и все работают за исключением даты. В настоящее время я пытаюсь:
sed -i -e 's:app_date="[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9]":app_date="$(date %m/%d/%Y)":g'
Но это не дает мне результатов, которые я хочу. Я также пробовал:
sed -ibak 's/app_date=\"[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9][0-9][0-9]\"/app_date=\$(date +%m/%d/$Y)\"/g'
Ничего не работает.
Любые идеи?
Edited добавить:
Решение Я успешно используется Шон Брайта с двойными кавычками:
sed -i -e "s:app_date=".*";:app_date="$(date +%m/%d/%Y)";:g" version.js
Это прекрасно работает для моих потребностей.
Каков ваш ожидаемый результат? – anubhava
ваше значение «день» '7 /' не будет соответствовать вашему регулярному выражению '[0-9] [0-9] /' Также используйте формат YYYY-MM-DD для дат файла, и они будут сортироваться автоматически в 'ls' листинг. Удачи. – shellter
Общее правило регулярных выражений - «не пересобираться». Поэтому см. Обновленную вторую часть ответа Шона Брайта о том, как избежать совпадения вещей, которые вам не нужны. –