用sed用单引号替换行
replace line with single quotes by sed
我想将以 "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 命令以某种方式实现它吗?
P.S。 sed 来自openwrt busybox,有限,只支持e,f,i,n,r.
试试这个:
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 会解释大量其他字符,例如 $
和 !
,然后需要转义。
您可以在双引号 sed
命令中使用单引号字符串而无需转义它们:
sed -i "/option timezone/c\option timezone 'EST-10'" /etc/config/system
我想将以 "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 命令以某种方式实现它吗? P.S。 sed 来自openwrt busybox,有限,只支持e,f,i,n,r.
试试这个:
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 会解释大量其他字符,例如 $
和 !
,然后需要转义。
您可以在双引号 sed
命令中使用单引号字符串而无需转义它们:
sed -i "/option timezone/c\option timezone 'EST-10'" /etc/config/system