
Я использую 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
.