我正在尝试替换文本文件中的特定字符串
输入: 电脑周边设备 互联网技术 C / C ++
输出: 购物 通用 编程
当我尝试使用下面的sed:
refcat="Computer Peripherals"
cat1="Shopping"
echo $list | sed -e 's@$refcat@$cat1@g'
我得到以下结果:
计算机 外设 互联网 技术
我在不同的行上获得输出。有人可以帮我这个吗?我的输入和输出值可以包含特殊字符(“|”或“@”除外)
答案 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++