Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Sed:如何将反向引用转换为变量名?_Regex_Sed - Fatal编程技术网

Regex Sed:如何将反向引用转换为变量名?

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展开变量 现在还不清楚您真正想做什么,但是如果您只想在字符串中

你知道在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展开变量 现在还不清楚您真正想做什么,但是如果您只想在字符串中创建一些变量,然后对字符串求值以展开变量,那么您需要使用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有很多陷阱。然而,这段代码确实解决了您描述的问题