Você pode fazer algo como:
$ echo 'aabiicaa' | perl -lne '
while (/aa|ii/g) {print substr($',-3)."[$&]".substr($'\'',0,2)}'
[aa]bi
aab[ii]ca
iic[aa]
Estou usando egrep
com a opção -o
para obter apenas a parte correspondente da linha, por exemplo
cat /usr/share/dict/words | egrep -o '(aa|ii)'
Agora, gostaria de ver algum contexto da correspondência, ou seja, alguns caracteres à esquerda e à direita. Uma maneira de conseguir isso é por
cat /usr/share/dict/words | egrep -o '.{3}(aa|ii).{2}'
Existe uma maneira melhor (mais eficiente e elegante)? (Eu passei pelas opções de linha de comando egrep
, mas não encontrei uma para essa finalidade).
Tags grep regular-expression