LINUX.ORG.RU

Как правильно через sed поменять значение на значение переменной

 ,


0

1

Есть конфиг, в нем нужно поменять два значения:

database=file:@@{DBDIR}/aide.db.gz

database_out=file:@@{DBDIR}/aide.db.new.gz

Нужно значение aide.db.gz заменить на aide.db.20171212.gz, т.е. вчерашнюю дату подставить, а aide.db.new.gz заменить на aide.db.20171213.gz, подставить сегодняшнюю дату.

Т.е. результат должен быть таким:

database=file:@@{DBDIR}/aide.db.20171212.gz

database_out=file:@@{DBDIR}/aide.db.20171213.gz

Насколько я поняла, должно сначала выводится сегодняшнее число через

 date +%Y%m%d
А после этот вывод добавить в команду sed:
sed -i "s/aide.db.new.gz/aide.db.{$date +%Y%b%d}.gz/g" /etc/file.conf

Пробовала через единую строку команды, через экранирование кавычками, апострофами, в итоге, если переменная читается, в значении получается aide.db..gz или

 sed -i "s/aide.db.new.gz/aide.db.`$date +%Y%b%d`.gz/g" /etc/file.conf
-bash: +%Y%b%d: команда не найдена

sed -i "s/aide.db.new.gz/aide.db.${date +%Y%b%d}.gz/g" /etc/file.conf
-bash: s/aide.db.new.gz/aide.db.${date +%Y%b%d}.gz/g: bad substitution

Как-то можно через echo вывести дату, обозначить ее за переменную (в командной строке), а потом ее подставить во второе значение в команде sed?

sed -i -e "s/"aide.db.new.gz"/"aide.db.$(date +%Y%m%d).gz"/g" /etc/file.conf 
Pyzia ★★★★★
()
Последнее исправление: Pyzia (всего исправлений: 1)
Ответ на: комментарий от teod0r

Спасибо!!!!!

Сработало!!!

Только получилось ещё проще:

sed -i "s/aide.db.new.gz/aide.db.`date +%Y%m%d`.gz/g" /etc/file.conf

Т.е. без $ тоже работает! Спасибо всем!!

manik207
() автор топика
Ответ на: Спасибо!!!!! от manik207

Только получилось ещё проще:
`

к этому лучше не привыкать. лучше использовать $( ), т.к. в ` ` могут быть проблемы со вложенными ` и \. но в данной ситуации всё-равно

teod0r ★★★★★
()

Нужно значение aide.db.gz заменить на aide.db.20171212.gz

database=${database%/*}/smth , а вообще может просто обновлять по крону символьные ссылки: db.yesterday -> .. / db.current -> .. ?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.