Вы были на 99%, очень близко, просто:
grep '^[Oo]c\{2\}' filename
или эквивалент:
grep -E '^[Oo]c{2}' filename
^ [Oo] c
, курсор ^
соответствует началу, и любой из символов в []
соответствует c {2}
, где вы хотели сопоставить предыдущий символ c
, ровно два раза. {
как метасимвол для использования с этим типом сопоставления, поэтому мы меняем его на \ {
и \}
, чтобы он распознал его grep -E '^ [Oo] c {2}' filename
Если это так не совпадает, возможно, скопируйте образец содержимого вашего теста filename
, который действительно включает то, что вы пытаетесь сопоставить, и обновите вопрос, чтобы отобразить его, на случай, если есть что-то еще, что мы пропустили.
POSIXly:
grep '\([0-9]\{3\}\).*\1'
Напечатает строки, содержащие 3 десятичных цифры, за которыми следует последовательность из 0 или более символов, за которыми следуют те же 3 цифры.
Чтобы ограничить шаблон перед первой запятой:
grep '^[^,]*\([0-9]\{3\}\)[^,]*\1'