我想将以“option timezone”开头的单行配置更改为带单引号的行:“option timezone'EST-10'”。但是当我这样做时
sed -i '/option timezone/c\option timezone 'EST-10'' /etc/config/system
错过单引号,结果如下:
head /etc/config/system
config system
option timezone EST-10
当然,引号前的反斜杠无济于事。我可以用\ c命令以某种方式实现它。 附: sed来自openwrt busybox,有限,只支持e,f,i,n,r。
答案 0 :(得分:3)
试试这个:
sed -i '/option timezone/c\option timezone '\'EST-10\' /etc/config/system
相邻字符串由bash自动连接,因此关闭第一个字符串,添加单引号(需要转义),EST-10,然后是另一个转义单引号。
如果" EST-10"部分包含空格,那么你也需要把它放在单引号中:
sed -i '/option timezone/c\option timezone '\''EST - 10'\' /etc/config/system
双引号也是一种选择,但我个人不喜欢使用它们,因为Bash会解释其他一些字符,例如$
和!
,然后需要转义。
答案 1 :(得分:1)
您可以在双引号sed
命令中使用单引号字符串,而无需转义它们:
sed -i "/option timezone/c\option timezone 'EST-10'" /etc/config/system