Contexto da expressão regular correspondente

2

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).

    
por Kaarel 03.07.2014 / 21:30

1 resposta

3

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]
    
por 03.07.2014 / 21:58