2014-12-22 2 views
0

У меня есть строки, выглядит следующим образом:Регулярное выражение в Grep, которые соответствуют строке

sapaa-czbrqrnop-3449607e001 
sapaa-deduipswp-3446871e001 
sapaa-delejwtbp2-3446869e001 

Эти строки в файлах на сервере. Я хотел бы использовать grep, чтобы найти эти строки. Поэтому я написал что-то вроде этого:

grep "[a-zA-Z]\-[a-zA-Z0-9]\-[0-9]\e[0-9]" filename 

Поэтому он должен найти соответствующие строки на линиях. Но это не сработает. Я на скалах. Что-то не так с этим регулярным выражением, или я не могу использовать его таким образом в grep?

ответ

2

Вам просто нужно добавить \+ или * рядом с каждым классом символов. + повторяет предыдущий токен один или несколько раз, тогда как ваш класс символов [a-zA-Z] без следующих * или + будет соответствовать одному символу. * повторяет предыдущий токен ноль или более раз. Поскольку базовый grep использует BRE, вам нужно избежать символа +. Чтобы он действовал как квантификатор повторения.

grep "[a-zA-Z]\+-[a-zA-Z0-9]\+-[0-9]\+e[0-9]\+" filename 

При необходимости используйте якоря.

grep "^[a-zA-Z]\+-[a-zA-Z0-9]\+-[0-9]\+e[0-9]\+$" filename 
Смежные вопросы