我有两个变量,
first= new pool ser/@10.25.89.322
second=ESX_10.2.3.4@10.52.33.21
我想用新池ESX_10.2.3.4@10.52.33.21
替换ser/@10.25.89.322
,并且还希望在新词之前删除空格。
我试过了,
sed -i -e "s/${second}/"${first//\\/\\\\}"/g"
和
sed -i -e "s/${second}/"${first//\\[ ]*/\\\\}"/g"
sed -i -e "s/${second}/"${first//\\ */ *\\\\}"/g"
我不想删除空格,只想按原样替换(“new”之前的空格除外)。
答案 0 :(得分:0)
尝试一下:
sed -i "/${second}/ {s:${second}:${first//\\/\\\\}:g ; s/ new /new /}"
在替换后的第一次出现的space
中删除了new
。
此外,在下面的测试中,添加了双引号:
$ 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