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 .