новая строка pcregrep lookbehind ошибка утверждения?

Классическая альтернатива для однобуквенных замен tr команда, которая должна быть доступной в примерно любой системе:

$ echo "foobar" | tr a b   
foobbr

tr лучше, чем sed для этого на самом деле начиная с использования sed (уже не говоря о perl или awk) поскольку однобуквенные замены похожи на использование молотка саней для уничтожения мухи.

grep не разработан для этого, это не изменяет свой вход, это только перерывает его.

С другой стороны, можно использовать возможности замены некоторых оболочек. Сюда использование ksh, zsh или bash синтаксис:

$ foo="foobar"
$ echo "${foo//a/b}"
foobbr

Мы могли дать Вам более определенные ответы, если бы Вы объяснили точно, какую проблему Вы пытаетесь решить.

3
02.05.2014, 03:44
1 ответ
[113152] Видимо, вы можете указать в [113557]pcregrep[113558], какой тип новой строки вы хотите, чтобы она искала. Переключатель [113559]-N[113560] делает это при использовании режима PCRE.


-N newline-type, --newline=newline-type Библиотека PCRE поддерживает пять различных соглашений для указания концов строк. Это односимвольные последовательности CR (возврат каретки) и LF (линейная подача), двухсимвольная последовательность CRLF, конвенция "anycrlf", которая распознает любой из трех предыдущих типов, и конвенция "any", в которой любая последовательность, заканчивающаяся строкой Unicode, считается завершающей строку. Юникодные последовательности - это только что упомянутые три, плюс VT (вертикальная закладка, U+000B), FF (подача формы, U+000C), NEL (следующая строка, U+0085), LS (разделитель строк, U+2028) и PS (разделитель абзацев, U+2029).

При сборке библиотеки PCRE указывается последовательность завершения строк по умолчанию. Обычно это стандартная последовательность для операционной системы. Если иное не указано данным параметром, pcregrep использует библиотеку по умолчанию. Возможные значения для этого параметра - CR, LF, CRLF, ANYCRLF или ANY. Это позволяет использовать pcregrep для сканирования файлов, которые пришли из других сред, без необходимости изменять их окончания строк. Если сканируемые данные не согласны с конвенцией, установленной этим параметром, pcregrep может вести себя странным образом. Обратите внимание, что эта опция не применяется к файлам, указанным опциями -f, --exclude-from или --include-from, которые, как ожидается, будут использовать стандартную последовательность строк операционной системы.Пример Другое странное поведение

Интересное изменение от lookbehind к lookahead дает результат:

3
27.01.2020, 21:23

Теги

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