sed
usa expressões regulares. Estes são diferentes dos padrões ("globs") que o shell usa.
Observe que o seguinte não funciona:
$ echo hostname=abc | sed "s/\<hostname=*\>/hostname=int1/"
hostname=int1=abc
Mas o seguinte faz:
$ echo hostname=abc | sed "s/\<hostname=.*\>/hostname=int1/"
hostname=int1
Você precisa de um .
antes do *
.
Como uma expressão regular , hostname=*
significa hostname
seguido por zero ou mais sinais de igual. Assim, sed "s/\<hostname=*\>/hostname=int1/"
substitui hostname
por hostname=int1
.
Por outro lado, a expressão regular hostname=.*
significa hostname=
seguida de zero ou mais qualquer caractere. É por isso que s/\<hostname=.*\>/hostname=int1/
substitui hostname=abc
por hostname=int1
.