簡體   English   中英

用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命令以某種方式實現它嗎? 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM