[英]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命令以某種方式實現它嗎? PS 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.