Сложная замена регулярных выражений

Очевидно, что программа использует zlibбиблиотеку сжатия, вероятно, для того, чтобы иметь возможность распаковывать сжатые ручные источники.

В зависимости от вашего Unix вам потребуется установить zlibфайлы разработки, (заголовки и т. д. ). Например, в дистрибутивах Linux на основе Debian и Ubuntu они поставляются в пакете zlib1g-dev.

Кроме того, если в вашем Unix уже есть mandocдоступный в виде предварительно -скомпилированного пакета, используйте его, а не компилируйте самостоятельно. См. список Unices здесь например (список может быть неполным ), и обратите внимание, что mandocиногда называют mdocml.

В Ubuntu (Zesty или более поздняя версия, но не Trusty, на которой работает пользователь, задающий вопрос):

apt-get install mandoc

-3
05.10.2019, 22:26
2 ответа

Если perlустановлен, его можно использовать следующим образом:

perl -pe "s/(?<=SomeTextBefore)ReplaceMe(?=SomeTextAfter)/NewText/g"

Для изменения файла можно использовать следующее:

cat source.txt | perl -pe "s/(?<=SomeTextBefore)ReplaceMe(?=SomeTextAfter)/NewText/g" > dest.txt

Добавьте параметр-CS , если файл закодирован в UTF8.

-1
28.01.2020, 05:19

when the full regex repertoire is needed (e.g. zero-width negative lookahead assertions)?

Упреждающие операции взяты из регулярных выражений Perl, а Perl унаследовал (скопировал )многие функции из sedи awk, так что, вероятно, вы захотите использовать именно его.

Например, чтобы заменить каждое foo, за которым не следует bar, наxxx:

perl -pe 's/foo(?!bar)/xxx/g' 

Флаг -pдаетsed-поведение, подобное запуску данного кода для входной строки и последующей печати результата.

Возможно, в Интернете есть несколько руководств по началу работы с Perl.

2
28.01.2020, 05:19

Теги

Похожие вопросы