Ответ 1
В общем, используйте этот синтаксис:
sed "s/<expression>/$(command)/" file
Это будет искать <expression>
и заменить его на вывод command
.
Для вашей конкретной проблемы вы можете использовать следующее:
sed "s/0/$(date +%s)/g" input.txt > output.txt
Это заменяет любой 0
, присутствующий в файле, с результатом команды date +%s
. Обратите внимание, что вам нужно использовать двойные кавычки, чтобы интерпретировать команду в $()
. В противном случае вы получите буквальный $(date +%s)
.
Если вы хотите, чтобы файл обновлялся автоматически, добавьте -i
в команду sed: sed -i "s/...
. Это называется редактированием на месте.
Test
Учитывая файл с этим контентом:
<?php return 0;
Посмотрим, что он возвращает:
$ sed "s/0/$(date +%s)/g" file
<?php return 1372175125;