substituição de string usando sed

1

Eu tenho essa string, por exemplo:

asddsa "ll" sadd " fsgsg"
"sdafaf" "lkkx" "fsgfgsg"

Eu quero substituir todos os caracteres dentro de " " por um caractere x . A saída esperada neste caso deve ser:

asddsa "x" sadd " x"
    "x" "x" "x"

Eu tentei algo assim: sed 's/".*"/"x"/g' , mas a saída é logicamente

asddsa "x" "x"

Como eu poderia corrigir meu regexp para obter a saída correta?

    
por pnom 11.04.2016 / 20:39

1 resposta

2

Um ponto . significa qualquer caractere. Mas você não quer que corresponda a uma aspa dupla; você quer que corresponda a qualquer coisa mas uma aspa dupla. Então especifique isso com uma classe de caracteres:

sed 's/"[^"]*"/"x"/g'
    
por 11.04.2016 / 21:01