如何使用sed替换带有指定单词的行中的文本?

时间:2016-12-22 16:27:43

标签: bash shell unix awk sed

我想在配置文件中更新名为$ buildDate的varible的值(unix timestamp)。

此字符串类似于

// ....
$buildDate='1482327565';
// ....

The official documentation说:

  

#substitute“foo”with“bar”仅适用于包含“baz”的行

     

sed'/ baz / s / foo / bar / g'

我试着这样使用:

  

sed -r -e“/ buildDate / s / [0-9] {10} / 0000000000 / g”config.php

但它不起作用。我收到消息“***禁止路径:/ buildDate / s / [0-9] {10} / 0000000000 / g”而不是。

更新 解决了。那是因为我的非root权利。

3 个答案:

答案 0 :(得分:1)

这是一个Awk解决方案:

#!/usr/bin/awk -f
BEGIN {
  FS = "="
}
$1 == "$buildDate" {
  $2 = "0000000000"
}
1

答案 1 :(得分:0)

试试这个:

sed '/buildDate/{s/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/0000000000/g}' config.php

答案 2 :(得分:0)

亚历克斯 - 请你试试,如果有帮助请告诉我。

sed "/buildDate/s/[0-9]\{10\}/0000000000/g" config.php

当我在BASH环境中测试时,上面成功地为我工作了。