sed expressão regular correspondendo mais do que o pretendido

1

Isto,

echo 'memory-type="3" reference-number="1" crc="0"' | sed 's/reference-number=".*"//g'

retorna:

memory-type="3" 

Eu quero:

memory-type="3" crc="0"

Qual é o reg-ex para conseguir isso?

O espaço em branco não é importante no resultado final

    
por 125 30.07.2018 / 20:55

1 resposta

3

Seu problema é que .* corresponde à string mais longa possível; no seu caso:

memory-type="3" reference-number="1" crc="0"
                                  ↑-------↑

Você deseja que corresponda apenas o 1 . A maneira mais simples de fazer isso é combinar, não qualquer número de qualquer caractere, mas qualquer número de qualquer caractere exceto para aspas :

$ echo 'memory-type="3" reference-number="1" crc="0"' | sed 's/reference-number="[^"]*"//g'
memory-type="3"  crc="0"
    
por 30.07.2018 / 21:15