我有一个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”开关,尝试使用双/单引号...没有任何作用 - 我似乎无法回应特殊字符。
我做错了什么?
答案 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