Я использую sed (на самом деле ssed с расширенной "-r", поэтому у меня есть доступ к большинству любых функций регулярных выражений, которые могут мне понадобиться) для обработки файлов, одно изменение заключается в преобразовании двойных символов обратной косой черты в одну прямую косую черту внутри кавычек строки. Проблема в том, что некоторые строки в кавычках, содержащие двойные обратные слеши, не должны быть преобразованы. У всех строк в кавычках, на которые я хочу ориентироваться, есть определенное слово «myPhrase» внутри кавычек.
Итак, для файла с этими двумя строками:
"\\\\server\\dir\\myPhrase\\subdir"
"Don't change \\something me!"
вывод будет:
"//server/dir/myPhrase/subdir"
"Don't change \\something me!"
Я пробовал различные комбинации вида вида (? = MyPhrase) в шаблоне поиска, который находит нужные куски в кавычках и заменяет группу захвата (\\) на / в качестве замены, но все мои попытки либо заменяют только первое появление двойных обратных косых черт или тех, что слева от myPhrase и т. д.
Я уверен, что есть какая-то комбинация lookahead / noncapture / recursion, которая должна сделать это, но сейчас я полностью отключаюсь.