Почему точное соответствие в регулярных выражениях ({n}) не работает в командной строке? - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь сопоставить выражение, которое встречается в строке ровно 2 раза.Я попытался:
find . * | egrep "(prune){2}"
Это не показывает вывод.

Однако, когда я пытаюсь:
find . * | egrep "(prune){1}"
Это показывает как 1, так и 2 совпадения в строке.
code+output

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

В вашем случае для использования регулярного выражения "(prune) {2}" вам нужно найти хотя бы один файл, содержащий слово "pruneprune" в имени файла, вы не найдете ничего, потому что у вас нет файлакоторый содержит слово "pruneprune".

, чтобы проверить его, попробуйте создать несколько файлов с этим:

touch {a..b}pruneprune{1..9}.log

и повторите команду с "(prune) {2}".

0 голосов
/ 27 марта 2019

Синтаксис {n} означает: соответствует предыдущему выражению n раз . Таким образом, использование (prune){2} будет соответствовать только pruneprune.

Попробуйте .*prune.*prune.* вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...