使用sed

时间:2015-09-17 05:32:10

标签: bash date sed

我有一个文件,我想用sed重命名。为简单起见,这就是我想要做的事情:

sh-4.3$ echo `date`
Thu 17 Sep 08:29:50 EAT 2015
sh-4.3$ echo `date` | sed 's/`date`/Today/'
Thu 17 Sep 08:29:58 EAT 2015
sh-4.3$ 

我希望它回应"今天"。什么是捕获?

3 个答案:

答案 0 :(得分:1)

在单引号内,不会评估反引号。改为使用双引号:

$ echo `date` | sed "s/`date`/Today/"
Today

出于各种原因,反叛被认为是过时的。对于所有POSIX shell,请使用$(...)

$ echo $(date) | sed "s/$(date)/Today/"
Today

虽然它可能与较大的脚本无关,但对于这个简单的命令,不需要echo

$ date | sed "s/$(date)/Today/"
Today

请注意,这很脆弱。如果在执行一个date命令和执行一个<div id="intro"> <h1 class="some class"> <p id="some_id"> Some text 1 </p> <p> Some text 2 </p> </div> 命令之间发生秒数,则此替换将失败。

答案 1 :(得分:0)

echo `date`

不同
echo 'date'

反引号会导致执行包含在其中的表达式,单引号是一个纯字符串。

由于您的回声如此简单,echo date也可以正常工作。

答案 2 :(得分:0)

我预先设定也要更改分隔符,日期信息可能有一些元字符取决于设置

date | sed "s~$( date )~Today~"