Вот пример текста уценки:
# "Мой заголовок"
! Подпись к изображению. {Style = "float: right; width: 20%; border: 1px "}
Некоторый" цитируемый текст ", некоторый *" выделенный текст "*, и т. Д. c.
В сценарии bash я пытаюсь заменить любые двойные кавычки с французскими кавычками.
Например: «слово» должно стать «словом».
Другими словами, все кавычки перед словом должны быть заменены открытой французской кавычкой, за которой следует неразрывным пробелом; и все кавычки после слова следует заменить неразрывным пробелом, за которым следует закрытая французская кавычка; ЗА ИСКЛЮЧЕНИЕМ случаев, когда кавычки находятся внутри фигурных скобок.
Таким образом, предыдущий текст уценки должен быть преобразован следующим образом:
# «My title»
! Image caption . {style = "float: right; width: 20%; border: 1px"}
Некоторые «цитируемый текст», некоторые * «выделенный текст» * и т. д. c.
То, что я пробовал
Сейчас я использую в своем скрипте следующее регулярное выражение:
" Replace "word by « word
sed -i -Ee "/(^|\s|\(|\[)\"/ s//\1« /g" myfile.md
" Replace word" by word »
sed -i -Ee "/(\S)\"/ s//\1 »/g" myfile.md
Конечно, проблема в том, что оно заменяет все кавычки, даже внутри фигурных скобки.
Итак, мой вопрос: какое регулярное выражение могло бы заменить двойные кавычки французскими кавычками, кроме как внутри фигурных скобок?