如何将特殊字符回显到文件中?

时间:2018-02-15 15:40:54

标签: bash sed echo special-characters

我有一个shell脚本可以执行各种操作。

其中,它检查/etc/rc.local中是否存在某一行,如果该行不存在,我想将其添加到文件中。

grep reboot "/etc/rc.local" || echo -e "sed -i 's/\^reboot//g' $script" >> /etc/rc.local

问题是我无法在文件中插入特殊字符“^”。

因此,如果我只是运行该行,而没有重定向到/etc/rc.local:

# grep reboot  "/etc/rc.local" || echo -e 'sed -i "s/\^reboot//g" $script' >> /etc/rc.local
sed -i 's/reboot//g' /root/1.sh

你可以看到echo'ed线路错过了“^”。

我尝试使用和不使用echo的“-e”开关,尝试使用双/单引号...没有任何作用 - 我似乎无法回应特殊字符。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

$ cat inputfile
some reboot
reboot
some reboot other

删除仅包含reboot的行。

$ sed '/^reboot$/d' inputfile
some reboot
some reboot other

使用-i就地删除它并覆盖inputfile

答案 1 :(得分:1)

要删除开头有“重启”的行,请使用

grep -v '^reboot' /etc/rc.local > result