正在回答這個問題:
sed
我在4.2.2版本中發現了以下情況。
從這個輸入:
send host-name = gethostname();
domain-name, domain-name-servers, domain-search, host-name,
# option host-name "andare.swiftmedia.com";
我只想從第二行刪除字串“host-name”,因此預期輸出是:
send host-name = gethostname();
domain-name, domain-name-servers, domain-search,
# option host-name "andare.swiftmedia.com";
然後我使用了以下命令:
sed -e 's/" host-name,"//g' input_file
但是,它不會刪除 input_file 上的「主機名稱」字串,使其保持原樣。
如果我不使用雙引號:
sed -e 's/ host-name,//g' input_file
它正確地給出了預期的輸出。
我認為正確的方法是使用雙引號,但不明白為什麼它在這裡不起作用。
答案1
裡面的外殼性格"
並不特殊'
… '
。事實上,裡面'
...'
沒有一個角色是特別的對於外殼;結果,"
字符被傳遞到sed
;而且它們並不特別sed
。
該命令sed -e 's/" host-name,"//g'
實際上是在尋找"
h
o
s
t
n
a
m
e
,
"
,但它找不到,因為它不在那裡。