bash是否支持一次对变量进行多个字符串替换?
变量上的(示例V变量)我想用string1替换XXXXXXX,用string2替换YYYYY,用string3替换ZZZZZZZ
是否可以运行1个这样的重新间隔命令而不是下面的3次运行?
$ V="AAAAAAA/XXXXXXX/BBBBBB/YYYYY/CCCCCC/ZZZZZZZ"
$ V=${V//XXXXXXX/string1}
$ V=${V//YYYYY/string2}
$ V=${V//ZZZZZZZ/string3}
$ echo $V
AAAAAAA/string1/BBBBBB/string2/CCCCCC/string3
$
更新:有人将我的问题标记为另一个问题的副本,遗憾的是我在页面上找不到任何直接相似性或回答我的问题。
答案 0 :(得分:1)
如果您使用sed
,则会更容易。
V=$(echo $V | sed -e 's/XXXXXXX/string1/' -e 's/YYYYY/string2/' -e 's/ZZZZZZZ/string3/')
答案 1 :(得分:1)
是的,你可以这样做: -
V=$(echo "$V" | sed 's/XXXXXXX/string1/g;s/YYYYY/string2/g;s/ZZZZZZZ/string3/g')
它将如何运作? sed
命令将搜索sting XXXXXX并将其替换为string2,将字符串YYYYYY替换为string2,最后将zZZZZZZ替换为string3并将新字符串存储到变量V中。
现在检查结果如下: -
echo $V
答案 2 :(得分:0)
@ Abhijit的答案非常好(sed选项/g
对应于Bash //
替换所有出现的事件)但请注意,在Bash中你可以避免回声和管道通过做:
V=$(sed -e 's/XXXXXXX/string1/g;s/YYYYY/string2/g;s/ZZZZZZZ/string3/g' <<< $V)
此功能实际上称为here string。