gpt4 book ai didi

linux - 将所有脚本中的变量评估方法从 $VAR_NAME 更改为 ${VAR_NAME}

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:11 25 4
gpt4 key购买 nike

我们有几个脚本,我们希望将变量评估方法从 $VAR_NAME 替换为 ${VAR_NAME}
这是必需的,以便脚本具有统一的变量评估方法

我正在考虑使用 sed,我编写了如下示例命令,

echo "\$VAR_NAME" | sed 's/^$[_a-zA-Z0-9]*/${&}/g'

同样的输出是

${$VAR_NAME}

现在我不想在 {} 中使用 $,我该如何删除它?
对于完成此任务有更好的建议吗?

编辑以下命令有效

echo "\$VAR_NAME" | sed -r 's/\$([_a-zA-Z]+)/${\1}/g'

编辑1
我使用以下命令在脚本文件中进行替换

sed -i -r 's:\$([_a-zA-Z0-9]+):${\1}:g' <ScriptName>

最佳答案

由于 sed 命令的第一部分搜索 $VAR_NAME,因此整个 $VAR_NAME部分将放入 ${} 包装器中。

您可以在正则表达式中使用后视搜索 $ 部分,这样您最终可以使用 /{&}/结束 sed 调用g 因为 $ 将位于匹配表达式的左侧。

http://www.regular-expressions.info/lookaround.html
http://www.perlmonks.org/?node_id=518444

我认为 sed 不支持这种正则表达式,但您可以创建一个以 perl -pe 开头的命令。我相信以下 perl 命令可以满足您的需求。

perl -p -e 's/(?<=\$)[_a-zA-Z0-9]*/{$&}/g'

PCRE Regex to SED

关于linux - 将所有脚本中的变量评估方法从 $VAR_NAME 更改为 ${VAR_NAME},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34148834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com