我得到了一个包含以下内容的文本文件
2012/03/15 : "Password":"@#4JF9u92r","Name":"John"
我希望使用 sed 将上述内容更改为
2012/03/15 : "Password":"XXX","Name":"John"
我已经尝试过以下命令
cat log.txt | sed 's/\("Password":\"\)\(.*\)\(\",\"Name\":\)/\1XXX/'
但它给了我
2012/03/15 : "Password":"XXX"John"
我做错了什么?
谢谢!
答案1
你应该稍微改变你的sed
命令:
sed 's/\("Password":\"\).*\(\",\"Name\":\)/\1XXX\2/'
答案2
下面是正则表达式的基础,放置必要的转义字符
(\s"Password":")(.*?)(","Name":"(.*?)")
用。。。来代替\1XXX\3
放置适当的转义字符后,我认为它应该是这样的。
cat log.txt | sed '\(s/\"Password\":\"\)\(.*?\)\(\",\"Name\":\"\(.*?\)\"\)/\1XXX\3/'
答案3
这可能对你有用:
echo '2012/03/15 : "Password":"@#4JF9u92r","Name":"John"' |
sed 's/\("Password":"\)[^"]*/\1XXX/'
2012/03/15 : "Password":"XXX","Name":"John"