轉義雙引號ca在sed中絕對有必要:例如,如果在整個sed表達式中使用雙引號(因爲在使用shell變量時需要執行此操作)。
下面是對SED逃逸倒是一個例子,但也捕獲在bash一些其他的報價問題:
# cat inventory
PURCHASED="2014-09-01"
SITE="Atlanta"
LOCATION="Room 154"
比方說,你想用sed腳本,您可以用遍地改變房間,所以你variablize輸入如下:
# i="Room 101" (these quotes are there so the variable can contains spaces)
這個腳本會增加整個行,如果它不存在,或者它會簡單地替換(使用SED)是那裏的文字加價值線$我。
if grep -q LOCATION inventory; then
## The sed expression is double quoted to allow for variable expansion;
## the literal quotes are both escaped with \
sed -i "/^LOCATION/c\LOCATION=\"$i\"" inventory
## Note the three layers of quotes to get echo to expand the variable
## AND insert the literal quotes
else
echo LOCATION='"'$i'"' >> inventory
fi
P.S.我寫了上面的腳本以多行做出的評論解析的,但我把它作爲一個班輪在命令行中,看起來像這樣的:
i="your location"; if grep -q LOCATION inventory; then sed -i "/^LOCATION/c\LOCATION=\"$i\"" inventory; else echo LOCATION='"'$i'"' >> inventory; fi
偉大的答案dood,我只是有一個簡單的問題。我將如何做單引號來代替我的雙打。我在我的代碼中有單個或雙重的實例我只能運行這個命令兩次,但是轉義單引號的語法是什麼? – KRB
要麼只是切換引號,以便你有,例如,'sed「##http://www.fubar.com'#URL_FUBAR#g」'或轉義單引號'sed的#\'http: //www.fubar.com \'#URL_FUBAR#g''。 – Kusalananda
在製作中的天才 - 非常感謝:) – danday74