我有一个包含以下内容的文件:
<?php return 0;
Run Code Online (Sandbox Code Playgroud)
我想用bash替换0当前时间戳的值.
我知道我可以通过以下方式获取当前时间戳:
date +%s
Run Code Online (Sandbox Code Playgroud)
我可以用以下代码替换字符串sed:
sed 's/old/new/g' input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)
但是如何将两者结合起来实现我想要的呢?解决方案不涉及sed并且date也受欢迎,只要它们只使用shell工具.
fed*_*qui 34
通常,请使用以下语法:
sed "s/<expression>/$(command)/" file
Run Code Online (Sandbox Code Playgroud)
这将寻找<expression>并替换它的输出command.
对于您的特定问题,您可以使用以下内容:
sed "s/0/$(date +%s)/g" input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)
这将0使用命令的输出替换文件中的任何内容date +%s.请注意,您需要使用双引号来$()解释命令.否则,你会得到一个文字$(date +%s).
如果要自动更新文件,请添加-i到sed命令:sed -i "s/....这称为就地编辑.
给定具有此内容的文件:
<?php return 0;
Run Code Online (Sandbox Code Playgroud)
让我们看看它返回的内容:
$ sed "s/0/$(date +%s)/g" file
<?php return 1372175125;
Run Code Online (Sandbox Code Playgroud)