grep и найди в конвейере. Странный реверс - PullRequest
1 голос
/ 27 декабря 2011

просто найти дает мне:

.
./bla-bla_(11)
./bla-bla_(1)
./rename
./rename~

Это find . | grep "*_([0-9]\{1,2\})" дает мне пустой результат.

и это find . | grep "([0-9]\{1,2\})_*" дает мне

./bla-bla_(11)
./bla-bla_(1)

Но какВы можете видеть подчеркивание и другие символы, появляющиеся перед цифрами в скобках.Почему это работает во втором случае?но не в первую очередь, где я разместил их в правильном порядке.

Ответы [ 2 ]

1 голос
/ 27 декабря 2011

Как говорит @kev, ваше первое регулярное выражение недействительно: * является квантификатором, и перед ним должен стоять атом. Здесь это не так.

Регулярные выражения не являются файловыми глобусами. Вы, вероятно, хотите .*, что означает «любой символ (.), ноль или более раз (*)».

1 голос
/ 27 декабря 2011
([0-9]\{1,2\})_*

соответствует вещам типа (11) или (1), за которыми следует ноль или более подчеркиваний.

*_([0-9]\{1,2\})

соответствует *, за которыми следует _, за которым следуетчто-то вроде (11).Что вы имеете в виду

.*_([0-9]\{1,2\})

Обратите внимание на .;регулярные выражения не являются шаблонами глобуса.

...