Этотна странице говорится, что любой множитель в регулярном выражении может быть дополнен суффиксом '?' для выполнения нежадного поиска. Однако я не могу понять, как заставить это работать в grep.
grep -E '^.*?$' file
печатает весь текст.
Как выполнить нежадный поиск по регулярным выражениям с помощью grep?
решение1
Вам нужна grep
поддержка PCRE (Perl Compatible Regular Expression). Например, GNU grep
имеет это -- может быть использовано с -P
опцией. Также есть отдельная программа с именем pcregrep
, которая может быть установлена на многих системах с обычной упаковкой.
Обратите внимание, что -E
включает ERE (расширенное регулярное выражение), которое не поддерживает нежадное сопоставление с ?
токеном.
Итак, с помощью GNU grep
вы можете сделать, например:
grep -Po '^.*?foo' file
для сопоставления (и извлечения) до первого foo
от начала.