Por que esta correspondência de regex de sed não é?

3

Recentemente, comecei a aprender sed . Eu fiz

$seq 10 | sed '/[^049]/d'

Eu estava esperando

4 
9
10

como saída. Mas eu tenho

4
9

Onde estou cometendo um erro ao entender este regex?

    
por Dharmit 27.04.2011 / 03:34

2 respostas

4

O 1 no número 10 corresponde a [^049] , pelo que é eliminado.

    
por 27.04.2011 / 04:02
1

Se você realmente deseja mostrar linhas contendo "0", "4" ou "9", veja como:

seq 10 | sed -n '/[049]/p'

O -n instrui sed para não imprimir nenhuma linha. O comando p instrui sed a imprimir linhas correspondentes ao /regex/

Como alternativa, você sempre pode usar grep : -)

seq 10 | grep -E "[049]"
    
por 27.04.2011 / 16:51