主页 > 开源代码  > 

linuxsed命令:sed替换命令使用环境变量,且环境变量中有文件分隔符时,sed命令不work(unknow

linuxsed命令:sed替换命令使用环境变量,且环境变量中有文件分隔符时,sed命令不work(unknow

问题:sed替换命令使用环境变量,且环境变量中有文件分隔符时,sed命令不work

linux中sed命令可以做文本替换。 比如:

echo aaaccc111 | sed 's/aaa/bbb/g' 命令可以替换aaa为bbb, 输出结果为 bbbccc111

但是当使用环境变量时,命令会不太work。 比如

# 需要将一个文件中的 $currinterface 替换为目标环境变量 $interface # 且环境变量是复杂的字符,且包括/文件分割符时,这个就不work了。 currinterface="interface = internal/10.1.51.221;external/10.1" interface="interface = internal/10.1.51.221;external/10.1.51.221!101.43.111.111" # 当执行sed命令时 echo abcdefg123456 | sed "s/1/$(echo $interface)/g" sed: -e expression #1, char 28: unknown option to `s' # 会报错 unknown option to s 解决方案:

需要使用 | 替换为 / ; 另外使用双引号 "" ; 最后是使用新的方式获取环境变量 $(echo $interface)

echo "interface = internal/10.1.51.221;external/10.1aaaaa" | sed "s|$(echo $currinterface)|$(echo $interface)|g" # 输出为 interface = internal/10.1.51.221;external/10.1.51.221!101.43.111.111aaaaa
标签:

linuxsed命令:sed替换命令使用环境变量,且环境变量中有文件分隔符时,sed命令不work(unknow由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“linuxsed命令:sed替换命令使用环境变量,且环境变量中有文件分隔符时,sed命令不work(unknow