Как сказал ГэриДжон, вы неправильно поняли регулярное выражение. (* ->.*)
Но я бы пошел немного дальше, пока вы на это ... Я не знаю, как на самом деле выглядит ваш файл, но просто для практики я бы хотел сделать вашу операцию поиска / замены немного более безопасной.
Скажем, вы хотите запустить вещь через файл, подобный этому:
user=john
superuser=jimmy # don't want to change this line!
user=L33t_us3rn4m3 # that should work too, and these comments should remain intact as well, btw
# in the line below, I want to change user=hello to user=bob
# but in the comments, "user=hello" should remain intact
user=hello
С вашим текущим синтаксисом sed это может пойти не так. Чтобы сделать это немного более конкретным, вы можете попробовать:
sed -i 's/^user=[A-Za-z0-9_]*/user=bob/g' /tmp/myfile
Это будет:
- срабатывает только тогда, когда строка фактически начинается с "пользователя" (^)
- Измените «user =» только постольку, поскольку оно состоит из 0 или более букв, цифр или символов подчеркивания.
- оставьте все имя пользователя (т.е. комментарии в моем примере) без изменений
Это ни в коем случае не супер-безопасная вещь, которая будет работать всегда и везде, где вы хотите переименовать пользователей. Очевидно, что это зависит от того, как настроен ваш конфигурационный файл и что вы ожидаете встретить.
Но мой ответ призван дать немного "пищи для размышлений", потому что учитывая (количество) конфигурационных файлов, достаточно больших, чтобы ожидать, что так много имен пользователей не хотят делать это вручную, слепо заменяя «user =. * "кажется, возможно, опасно. Вы можете потратить некоторое время на полировку таких операций :)
Удачи.