O problema é que *
em expressões regulares significa 0 or more of the preceeding character
, isso não significa literal *
. Para corresponder a um *
, você precisa escape Por exemplo:
sed -i "s:'dbs_password' => 'a8b\*cyP0',:'dbs_password' => 'password-here':" test.php
Isto é desnecessariamente complexo no entanto. Se você quiser substituir todas as ocorrências da string a8b*cyP0
por password-here
, basta fazer:
sed -i "s:a8b\*cyP0:password-here:" test.php
Se você quiser substituir somente as linhas que correspondem a dbs_password
, faça:
sed -i "s:\(.*dbs_password.*\)'a8b\*cyP0':'password-here':" test.php
Esse último faz uso da captura padrão para evitar a impressão do mesmo padrão duas vezes.