【问题标题】:Replace text using sed使用 sed 替换文本
【发布时间】:2011-11-25 21:28:05
【问题描述】:

我无法通过 sed 替换脚本中的修改日期。

我得到的是这样的最后修改日期:

olddate=`grep -m1 "Built " script.sh | cut -c 22-29`

我得到当前日期:

newdate=`date +%d/%m/%y`

基本上我想用新日期替换旧日期

sed -i "" "s/$olddate/$newdate/g" script.sh

但这不起作用,因为日期包含斜杠。我环顾四周,找不到正确逃脱它们的方法。任何帮助将不胜感激。

【问题讨论】:

  • grep [...] | cut [...] 通常使用 awk 更好地表达(并为您节省一个管道)
  • 这个的情况下,awk '/Built / { print substr($0, 22, 8); exit }' script.sh

标签: regex shell date sed


【解决方案1】:

您可以使用斜线以外的分隔符,例如“;

sed -i "" "s;$olddate;$newdate;g" script.sh

【讨论】:

  • 完美。感谢您这么快的回复!
【解决方案2】:

使用sed "s#$olddate#$newdate#g"

应该可以的

【讨论】:

    【解决方案3】:

    使用 , 代替 / !

    sed -i "" "s,$olddate,$newdate,g" script.sh
    

    事实上,您几乎可以使用任何字符作为分隔符。

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 2022-10-21
      • 2012-10-14
      • 1970-01-01
      • 2020-02-27
      相关资源
      最近更新 更多