使用雙引號的 sed

使用雙引號的 sed

正在回答這個問題

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 , ",但它找不到,因為它不在那裡。

相關內容