Você deve alterar um pouco o comando sed
:
sed 's/\("Password":\"\).*\(\",\"Name\":\)/XXX/'
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!
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/'
Isso pode funcionar para você:
echo '2012/03/15 : "Password":"@#4JF9u92r","Name":"John"' |
sed 's/\("Password":"\)[^"]*/XXX/'
2012/03/15 : "Password":"XXX","Name":"John"
Tags sed