Respondendo a esta pergunta :
Encontrei a seguinte situação com a sed
versão 4.2.2.
A partir desta entrada:
send host-name = gethostname();
domain-name, domain-name-servers, domain-search, host-name,
# option host-name "andare.swiftmedia.com";
Eu quero remover a string "host-name" apenas da segunda linha, então a saída esperada é:
send host-name = gethostname();
domain-name, domain-name-servers, domain-search,
# option host-name "andare.swiftmedia.com";
Então usei o seguinte comando:
sed -e 's/" host-name,"//g' input_file
No entanto, ele não removerá a string "nome do host" em input_file, deixando-a como estava.
Se eu não usar aspas duplas:
sed -e 's/ host-name,//g' input_file
Dá corretamente a saída esperada.
Achei que a maneira correta seria usar aspas duplas, mas não consigo entender por que não está funcionando aqui.
O personagem
"
não é especial para o shell dentro'
...'
. Na verdade, dentro'
...'
nenhum personagem é especial para o shell; como consequência, os"
caracteres são passados parased
; e eles não são especiais parased
.O comando
sed -e 's/" host-name,"//g'
está procurando literalmente por"
h
o
s
t
n
a
m
e
,
"
, que não encontrará porque não está lá.