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

How to echo a special character into a file?

我有一个 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 的“-e”开关,尝试使用 double/single 引号...没有任何效果 - 我似乎无法回显特殊字符。

我做错了什么?

$ cat inputfile
some reboot
reboot
some reboot other

删除只有 reboot 而没有其他内容的行。

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

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

要删除开头有 "reboot" 的行,请使用

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