Пара примечаний:
- Вам не нужно сопоставлять начало и конец строки с
.*
, поскольку разрешены частичные совпадения \w
соответствует буквам,цифры и подчеркивания в шаблонах регулярных выражений NFA, в POSIX безопаснее использовать [[:alnum:]_]
- . Для формирования группы захвата в шаблоне POSIX BRE используйте экранированные скобки,
\(...\)
.
Таким образом, используйте
zgrep '\([[:alnum:]_]\).*\1.*\1.*\1' a.gz
Или сожмите его немного, поскольку он выглядит немного избыточным с тремя последовательными .*\1
подшаблонами:
zgrep '\([[:alnum:]_]\)\(.*\1\)\{3\}' a.gz