efeito de [0-9] * em uma expressão regular

0

Qual é a função de [0-9] * na seguinte declaração, que irá escrever todas as linhas que começam com um número par, seguido por um espaço, até o arquivo:

sed -n 's/^[0-9]*[02468] /&/w even' <file

Em seguida, eliminar [0-9]* terá a mesma função / saída. Em outras palavras, ambas as declarações são o mesmo efeito.

sed -n 's/^[02468] /&/w even' <file

[0-9]* é inútil aqui? Estou muito confuso. Por favor me ajude.

    
por Yu Siu Ping 14.03.2015 / 01:28

1 resposta

4

O [0-9]* não é inútil; corresponde a qualquer número (0-9) exibido antes do intervalo de números pares ( [02468] ). Isso é levar em consideração números pares de vários dígitos.

Por exemplo, se você não tiver ^[0-9]* ancorado ao início do seu padrão, ele não corresponderá:

92
910
308
20

O outro padrão que você mencionou ( /^[02468]/ ) corresponderia apenas a qualquer coisa que inicie com um dígito par.

    
por 14.03.2015 / 02:15