Как заменить строку #listen_addresses = 'localhost' на строку listen_addresses = '*' используя sed в Linux

Пробую команду:

sed "s/#listen_addresses = 'localhost'/listen_addresses = '*'" /somefile

Получаю ошибку:

sed: -e expression #1, char 58: unterminated `s' command

Ответы (2 шт):

Автор решения: 69 420 1970
#!/bin/bash

target="localhost"
replacement="'*'"

perl -wE'
    BEGIN { $p = shift; $r = shift }; 
    $_=q(#listen_addresses = 'localhost'); s/\Q$p/$r/; say
' "$target" "$replacement"

Выведет:

#listen_addresses = '*'

Perl Oneline:

perl -wE 'BEGIN { $p = shift; $r = shift }; $_=q(#listen_addresses = localhost); s/\Q$p/$r/; print' "localhost" "'*'"

Источник.

→ Ссылка
Автор решения: Artem Solov'yev

Правильная команда:

sed -i "/listen/s/\#listen_addresses\ =\ 'localhost'/listen_addresses = '*'/g" /somefile
→ Ссылка