sed将字符串替换为特殊字符

sed将字符串替换为特殊字符,sed,Sed,我正在尝试替换文本文件中的特定字符串 输入: 计算机外围设备 互联网技术 信用证++ 输出: 购物 通用的 程序设计 当我尝试使用以下sed时: refcat="Computer Peripherals" cat1="Shopping" echo $list | sed -e 's@$refcat@$cat1@g' 我得到以下结果: 计算机 外围设备 互联网 技术 我在另一行上得到输出。有人能帮我吗??我的输入和输出值中可以有特殊字符(除了“|”或“@”)单引号不插入shell变量,因此更改为

我正在尝试替换文本文件中的特定字符串

输入: 计算机外围设备 互联网技术 信用证++

输出: 购物 通用的 程序设计

当我尝试使用以下sed时:

refcat="Computer Peripherals"
cat1="Shopping"
echo $list | sed -e 's@$refcat@$cat1@g'
我得到以下结果:

计算机 外围设备 互联网 技术


我在另一行上得到输出。有人能帮我吗??我的输入和输出值中可以有特殊字符(除了“|”或“@”)

单引号不插入shell变量,因此更改为双引号:

echo $list | sed -e "s@$refcat@$cat1@g"

为了让shell扩展变量,我认为需要双引号

echo $list | sed -e "s@$refcat@$cat1@g"
我的例子

echo Computer Peripherals Internet Technology C/C++ | sed -e "s@${refcat}@${cat1}@g"
结果

Shopping Internet Technology C/C++

谢谢你的帮助,我在读取文件输入时发现了一个问题。我修正了这一点,并使用了你们的双引号建议。现在它开始工作了。再次感谢。