2017-02-18 16 views
-2

Это то, что у меня есть.Регулярное выражение для поиска ровно двух непоследовательных символов в строке с использованием grep/awk

grep "\(r\)\1" file 

Как приспособить это, чтобы сделать его соответствовать двум возможно непоследовательные r сек?

+2

вы хотите совместить 'рев, но не' извините', это так? как насчет 'ошибки'? – Sundeep

+0

Вы должны быть более конкретными. Пожалуйста, отредактируйте свое сообщение, чтобы включить образцы того, что вы хотите сопоставить, а также образцы того, что вы НЕ хотите сопоставлять. Ваше название неясно, и это единственное предложение объяснения, которое вы предоставили. Пожалуйста ** ** ** - мы не читаем здесь читателей, поэтому мы не можем читать ваши мысли, чтобы узнать, что вы действительно спрашиваете. –

ответ

0

Regex для поиска ровно два непоследовательные символов (r) в строке с помощью Grep:

$ cat foo 
r 
oro 
ror 
roro 
roror 
orro 
rorro 
$ grep "^[^r]*r[^r]\+r[^r]*$" foo 
ror 
roro 
0

если вы не вынуждены регулярное выражение/Grep, awk блестит в ясности и гибкости

$ awk '2==gsub(/r/,"r") && !/rr/' file 

читает как: ровно два r и не последовательные. Это предполагает одно слово в строке, но легко модифицируется для нескольких слов в строке.