我有一个文件包含:
<?PHP return 0;
我想用bash替换,值为0的当前时间戳.
我知道我可以得到当前的时间戳:
date +%s
我可以用sed替换字符串:
sed 's/old/new/g' input.txt > output.txt
但是如何结合这两个来实现我想要的呢?不涉及sed和date的解决方案也是受欢迎的,只要他们只使用shell工具.
一般来说,请使用这种语法:
sed "s/<expression>/$(command)/" file
这将查找< expression>并用命令的输出替换它.
对于您的具体问题,您可以使用以下内容:
sed "s/0/$(date +%s)/g" input.txt > output.txt
这将使用命令日期%s的输出替换文件中存在的任何0.请注意,您需要使用双引号来解释$()中的命令.否则,你会得到一个字面值$(日期%s).
如果要自动更新文件,请将-i添加到sed命令中:sed -i“s / ….这称为就地编辑.
测试
<?PHP return 0;
让我们看看它返回的是什么:
$sed "s/0/$(date +%s)/g" file <?PHP return 1372175125;