使用带双引号的 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 , ",但它找不到,因为它不在那里。

相关内容