我有两个变量,
first= new pool ser/@10.25.89.322
second=ESX_10.2.3.4@10.52.33.21
我想用新池 ser/@10.25.89.322
替换 ESX_10.2.3.4@10.52.33.21
并且还想删除新单词前的空格。
我试过,
sed -i -e "s/${second}/"${first//\\/\\\\}"/g"
和
sed -i -e "s/${second}/"${first//\\[ ]*/\\\\}"/g"
sed -i -e "s/${second}/"${first//\\ */ *\\\\}"/g"
我不想删除空格,只想按原样替换(“new”之前的空格除外)。
最佳答案
试试这个:
sed -i "/${second}/ {s:${second}:${first//\\/\\\\}:g ; s/ new /new /}"
它正在删除替换后行中第一次出现的 new
中的 space
。
此外,在下面的测试中,添加了双引号:
$ first=" new pool ser/@10.25.89.322"
$ second=ESX_10.2.3.4@10.52.33.21
$ sed -i "/${second}/ {s:${second}:${first//\\/\\\\}:g ; s/ new /new /}" mytestfile.txt
关于linux - 使用 sed 命令忽略包含\和多个空格的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37919365/