Возврат только части строки после шаблона соответствия (Unix)

Это было результатом того, что в этой группе не было [11640] предохранителя, и она не была добавлена к этой группе. Чтобы создать группу и быть добавленным в нее, выполните:[12115]Выход и обратно, чтобы применить изменения в группе.

1
20.08.2017, 06:56
3 ответа
[1180898] Если ваша версия grep поддерживает PCRE (Perl Compatible Regular Expressions), вы можете использовать возможности Perl lookbehind и lookahead

  1. или с помощью [1181206]pcregrep[1181207] (если доступно)
  2. Имейте в виду, что если ваш паттерн действительно разбит по линиям, тогда возвращаемый текст сохранит новую строку - перед использованием результата его можно удалить с помощью [1181208]tr[1181209] или [1181210]sed[1181211].
  3. Если сам текст нельзя разделить на строки (только маркеры [1181212]\HF[1181213] и [1181214]\[1181215]), то можно заменить [1181216](.|\n)+?[1181217] на более простой [1181218].+?[1181219], то есть.

Если даже маркер [1181220]\HF=[1181221] может быть разбит в любой точке на новую строку (как указано в вашем комментарии к первоначальному посту), то требуется несколько иной подход, так как PCRE в настоящее время не поддерживает lookbehinds переменной длины. В этом случае вы можете попробовать

, где lookbehind заменяется псевдо-якорным выражением, используя [1181222] \K

2
27.01.2020, 23:21
[1180914] Также можно использовать [1181224]sed[1181225],

  • Пример:
1
27.01.2020, 23:21
[1181432] С недавним [1181839]-cregrep[1181840]:

1
27.01.2020, 23:21

Теги

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