Regex Sed:如何将反向引用转换为变量名?
你知道在sed中如何使用backreference作为变量名吗 我尝试的是:Regex Sed:如何将反向引用转换为变量名?,regex,sed,Regex,Sed,你知道在sed中如何使用backreference作为变量名吗 我尝试的是: #!/bin/bash var_one=x var_two=y var_three=z echo "var_one + var_two = var_three" | sed -e "s/\(var_[^\ ]*\)/$\1/g" 我得到的是: $var_one + $var_two = $var_three 我想要的是: x + y = z 用Eval展开变量 现在还不清楚您真正想做什么,但是如果您只想在字符串中
#!/bin/bash
var_one=x
var_two=y
var_three=z
echo "var_one + var_two = var_three" | sed -e "s/\(var_[^\ ]*\)/$\1/g"
我得到的是:
$var_one + $var_two = $var_three
我想要的是:
x + y = z
用Eval展开变量
现在还不清楚您真正想做什么,但是如果您只想在字符串中创建一些变量,然后对字符串求值以展开变量,那么您需要使用eval。例如:
#!/bin/bash
var_one=x
var_two=y
var_three=z
result=$(
echo "var_one + var_two = var_three" |
sed -e "s/\(var_[^\ ]*\)/$\1/g"
)
eval "echo $result"
使用eval有很多陷阱。然而,这段代码确实解决了您描述的问题