Принуждение Bash использовать механизм Perl RegEx

Можно использовать что-то как:

grep -r "AXN" .

Использовать -ir если Вы хотите, чтобы это было нечувствительно к регистру.

9
26.07.2013, 04:10
2 ответа

Bash не поддерживает метод для Вас, чтобы сделать это в это время. Вас оставляют со следующими опциями:

  1. Используйте Perl
  2. Использовать grep [-P|--perl-regexp]
  3. Используйте функциональность Bash для кодирования его

Я думаю, что пошел бы с № 2 и попытался бы использовать grep получить то, что я хочу функционально. Поскольку спина, ссылающаяся на Вас, может сделать следующее с grep:

$ echo 'BEGIN `helloworld` END' | grep -oP '(?<=BEGIN `).*(?=` END)'
helloworld

-o, --only-matching       show only the part of a line matching PATTERN
-P, --perl-regexp         PATTERN is a Perl regular expression

(?=pattern)
    is a positive look-ahead assertion
(?!pattern)
    is a negative look-ahead assertion
(?<=pattern)
    is a positive look-behind assertion
(?<!pattern)
    is a negative look-behind assertion 

Ссылки

13
27.01.2020, 20:06
  • 1
    я честно не знал grep, имел a [-P|--perl-regexp] маркер. Большое спасибо :-) –  Fadi Hanna AL-Kass 29.07.2013, 04:12
  • 2
    @FadiHannaAL-Kass - пожалуйста. Спасибо за вопрос. –  slm♦ 29.07.2013, 04:14
  • 3
    Для потомства только GNU grep включает -P опция, и это не универсально. grep FreeBSD основан на GNU, но состояния документации "Эта опция не поддерживаются в FreeBSD". В OSX grep также основан на GNU, но -P опция даже не упоминается в странице справочника. И в других системах Unix, grep которых не является GNU, Вы вряд ли будете видеть -P где угодно вообще. Если существует удаленная возможность Вы, что мобильность может быть полезна для Вас в будущем, я рекомендую избежать определенных для ОС опций как это. –  ghoti 26.10.2015, 16:22
  • 4
    pcregrep также опция, при наличии. –  Wildcard 07.04.2016, 09:59
  • 5
    Нужно отметить, что zsh делает точно, что OP запросил, настолько же долго как REMATCH_PCRE опция установлена. –  Tim Peoples 30.06.2016, 02:02

Можно использовать pcregrep . Он поставляется с пакетом pcre в CentOS и pcregrep в Ubuntu.

grep -P могла иметь эту проблему в зависимости от ОС / версии:

-P, --perl-regexp
              Interpret PATTERN as a Perl regular expression.  This is highly experimental and grep -P may warn of unimplemented features.
0
27.01.2020, 20:06

Теги

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