Не работает «+» в синтаксисе регулярных выражений grep

Не работает «+» в синтаксисе регулярных выражений grep

Я использую Ubuntu 16.04

Пытающийся: grep '.*' file1

Выход: file nu-mber o-ne second string

Пытающийся:grep '.+' file1

Выход отсутствует

Почему плюс не работает?

решение1

Тебе нужно сказатьgrepвы используете расширенное регулярное выражение:

grep -E '.+' file1

СтандартБазовое регулярное выражение(как используется grepбез -E) эквивалентРасширенное регулярное выражение +оператор есть \{1,\}, хотя некоторые реализации (например, GNU) также распознают \+его как расширение (и вы всегда можете использовать ..*).

(Обратите внимание, что в данном конкретном случае grep -E .+это эквивалентно тому grep -E ., что вы ищете подстроки, соответствующие регулярному выражению, когда не используете опцию -x. Во многих системах egrepпредоставляется как эквивалентная команда для grep -E, но какГрэм указывает на тоЭтоустаревший.)

решение2

С помощью GNU grep (по умолчанию в Ubuntu) вы также можете включить расширенное поведение с помощью обратной косой черты. Например:

grep '.\+' file1

решение3

Я считаю, что + — это расширенный метасимвол регулярного выражения. Попробуйте использовать egrep.

Связанный контент