Como usar o sed para remover determinada base de texto na expressão regular

0

Eu recebi um arquivo de texto com o conteúdo abaixo

2012/03/15 : "Password":"@#4JF9u92r","Name":"John"

Eu gostaria de usar sed para mudar o acima para

2012/03/15 : "Password":"XXX","Name":"John"

Eu tentei o seguinte comando

cat log.txt | sed 's/\("Password":\"\)\(.*\)\(\",\"Name\":\)/XXX/'

Mas isso me dá

2012/03/15 : "Password":"XXX"John"

O que eu fiz de errado?

Obrigado!

    
por forestclown 15.03.2012 / 11:00

3 respostas

1

Você deve alterar um pouco o comando sed :

sed 's/\("Password":\"\).*\(\",\"Name\":\)/XXX/'
    
por 15.03.2012 / 11:30
1

Abaixo da regex é a base, coloque os caracteres de escape necessários

(\s"Password":")(.*?)(","Name":"(.*?)")

Substitua por XXX

Depois de colocar os caracteres de escape adequados, acho que deve ser algo assim.

cat log.txt | sed '\(s/\"Password\":\"\)\(.*?\)\(\",\"Name\":\"\(.*?\)\"\)/XXX/'
    
por 15.03.2012 / 11:36
1

Isso pode funcionar para você:

echo '2012/03/15 : "Password":"@#4JF9u92r","Name":"John"' |
sed 's/\("Password":"\)[^"]*/XXX/'
2012/03/15 : "Password":"XXX","Name":"John"
    
por 16.03.2012 / 00:46

Tags