Problemas com o grep -o regex

4

Estou tentando usar um comando grep com o sinalizador --only-matching, mas não está se comportando como eu esperaria.

Este comando:

echo "1/2/3/4/5" | grep -oE "^([^/]+/){0,2}"

Dá esta saída:

1/2/
3/4/

Eu esperava apenas 1/2/

O que está acontecendo ..? 3/4/ não deve corresponder a "^([^/]+/){0,2}" porque não está no início da linha ..

( executando o grep grep 2.5.1 )

    
por Acorn 09.03.2011 / 03:51

1 resposta

6

Foi um bug nas versões de GNU Grep anteriores a este commit (ou seja, anterior a GNU versão 2.5.3 ).

Citando a parte relevante do changelog:

Previously failing tests relative to left anchors (^ and \<) and -w should now pass.
O commit inicial que descreveu o bug também adicionou um teste para isso:

# End of a previous match should not match a "start of ..." expression.
grep_test "word_word/" "word_/" "^word_*" -o
    
por 09.03.2011 / 08:20