【问题标题】:How to add a variable to matched expression in sed? [duplicate]如何将变量添加到sed中的匹配表达式? [复制]
【发布时间】:2018-11-16 13:45:59
【问题描述】:

假设我有以下 Bash 脚本:

#!/bin/bash
INCREMENT_BY=5
sed 's/20000/&+$INCREMENT_BY/g' old > new

我希望所有出现的20000 都被20005 替换,但它们被替换为20000+$INCREMENT_BY。我怎样才能做到这一点?

【问题讨论】:

  • 是否使用 awk 选项?

标签: linux bash shell unix sed


【解决方案1】:

你应该使用 双引号 作为 eval 变量,例如:

sed "s/20000/$(( $INCREMENT_BY + 2000))/g" old

【讨论】:

  • 嗨,这使得输出“20000+5”而不是“20005”。它似乎将它从字面上解释为一个字符串,有没有办法让它评估总和?
  • 没有。 Sed 不会做数学题。
  • 既然已经知道了2000,为什么不能直接添加,比如:sed "s/20000/$(( $INCREMENT_BY + 2000))/g" old
猜你喜欢
  • 2021-03-15
  • 1970-01-01
  • 2014-08-29
  • 2011-10-26
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
相关资源
最近更新 更多