Respondiendo aesta pregunta:
Encontré la siguiente situación con sed
la versión 4.2.2.
De esta entrada:
send host-name = gethostname();
domain-name, domain-name-servers, domain-search, host-name,
# option host-name "andare.swiftmedia.com";
Quiero eliminar la cadena "nombre de host" solo de la segunda línea, por lo que el resultado esperado es:
send host-name = gethostname();
domain-name, domain-name-servers, domain-search,
# option host-name "andare.swiftmedia.com";
Luego utilicé el siguiente comando:
sed -e 's/" host-name,"//g' input_file
Sin embargo, no eliminará la cadena "host-name" en input_file dejándola como estaba.
Si no uso comillas dobles:
sed -e 's/ host-name,//g' input_file
Proporciona correctamente el resultado esperado.
Pensé que la forma correcta sería utilizar comillas dobles, pero no puedo entender por qué no funciona aquí.
Respuesta1
El personaje "
no es especial por el caparazón que hay dentro '
... '
De hecho, en el interior '
...'
ningún personaje es especialpara el caparazón; como consecuencia, los "
caracteres pasan a sed
; y no son especiales para sed
.
El comando sed -e 's/" host-name,"//g'
busca literalmente "
h
o
s
t
n
a
m
e
,
"
, que no encontrará porque no está allí.