sed用特殊字符替换字符串

时间:2013-09-30 20:52:52

标签: sed

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

输入: 电脑周边设备 互联网技术 C / C ++

输出: 购物 通用 编程

当我尝试使用下面的sed:

refcat="Computer Peripherals"
cat1="Shopping"
echo $list | sed -e 's@$refcat@$cat1@g'

我得到以下结果:

计算机 外设 互联网 技术

我在不同的行上获得输出。有人可以帮我这个吗?我的输入和输出值可以包含特殊字符(“|”或“@”除外)

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

对于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++