Есть некоторые проблемы с кодом, который вы пробовали.
Во-первых, все будет проще, если вы выберете символ, который нигде не отображается в тексте, в качестве разделителя для команды s///
. Кроме того, вы должны экранировать \
любое появление разделителя в вашем тексте.
В вашей первой команде
sed -i -e 's/\(<span class=\"symbol\">\)\(<\/span>\)/\[/\]/\{custom-style=\"symbol\"\}/g'myfile.md
ошибка, которую вы получаете, связана с /
в [/\]
, которая не экранирована.
Кроме того, чтобы поместить литерал &
в выходной текст, вы должны экранировать его с помощью \
в вашем выражении замены. В противном случае &
интерпретируется как особое и заменяется соответствующей частью пространства шаблонов.
Для простоты здесь я удалил (, возможно? )ненужные escape-символы и, возможно, пара (? )ненужные/
(из[/\]/\{custom-style=\"symbol\"\}
). Я также выбрал |
в качестве разделителя для команды s///
, так как он не появляется в вашем вводимом тексте. Команда становится:
sed -e 's|<span class="symbol"></span>|[\]{custom-style="symbol"}|g'
Вот что он делает:
$ echo '<span class="symbol"></span>' | sed -e 's|<span class="symbol"></span>|[\]{custom-style="symbol"}|g'
[]{custom-style="symbol"}
Если строка 
не является статической и вы хотите заменить <span class="symbol">
на [
и </span>
на ]{custom-style="symbol"}
вокруг нее, каким бы ни было ее значение, вы можете использовать группу захвата(()
)и обратная ссылка (здесь,\1
):
sed -e 's|<span class="symbol">\(.*\)</span>|[\1]{custom-style="symbol"}|g'
Что делает эта команда:
$ echo '<span class="symbol">whatever is here</span>' | sed -e 's|<span class="symbol">\(.*\)</span>|[\1]{custom-style="symbol"}|g'
[whatever is here]{custom-style="symbol"}
Наконец, вы, как правило, предпочитаете использовать одинарные кавычки('
)вместо двойных кавычек("
)вокруг sed
скриптов, чтобы защитить их от расширения параметров оболочки -, запускаемого $
, чтобы избежать эффектов \
...
and I find that Firefox is ignoring my /etc/hosts file
Не должно, проверьте:https://bugzilla.mozilla.org/show_bug.cgi?id=1453207
Убедитесь, что вы используете Firefox 83 или более позднюю версию, в которой эта ошибка была исправлена. В качестве альтернативы попробуйте отключить DNS через HTTPS :https://support.mozilla.org/en-US/kb/firefox-dns-over-https
.