Tente isto:
sed -r "s/=~(.*)$/match()/" <filename>
Além disso, o erro que você está recebendo é porque sed interpreta /=\~/
como um filtro para a linha que a operação deve ser executada, s/=\~/match(/
como a operação e s/$/ )/
como sinalizador para a operação, neste caso Caso você precise usar um grupo e separar as expressões com uma nova linha:
sed -re "/=\~/ {
s/=\~/match(/
s/$/ )/
}" <filename>
Aqui está a documentação relevante sobre o bloco de comando {}
de info sed
'{ COMMANDS }'
A group of commands may be enclosed between '{' and '}' characters.
This is particularly useful when you want a group of commands to
be triggered by a single address (or address-range) match.