如何使用sed命令替换日志中敏感用户名前缀为******?
解决sed替换日志敏感用户名的问题
你的需求是把日志中dataUsername generated is =后面@前的敏感用户名替换为******,保留@及后续域名部分。
问题分析
你之前的命令存在几个问题:
- 正则表达式
[a-zA-ZO-9@.-]中的O是大写字母O,应该是数字0;且该表达式仅匹配单个字符,无法匹配完整的用户名 - 模式中遗漏了关键的
=符号 - 命令末尾多了一个多余的引号,导致语法错误
- 替换逻辑没有保留@后的域名部分
正确的sed命令
方法1:使用sed基本正则(无需额外选项)
sed 's/dataUsername generated is = \([^@]*\)@/dataUsername generated is = ******@/g'
\([^@]*\):匹配@之前的所有非@字符(即需要替换的敏感用户名),用括号捕获该部分- 替换时用
******@替代捕获的内容+@,保留后续域名
方法2:使用sed扩展正则(加-r选项,语法更简洁)
sed -r 's/dataUsername generated is = ([^@]*)@/dataUsername generated is = ******@/g'
-r启用扩展正则,无需转义括号,写法更直观
测试示例
将你的日志输入:
"Log: abcservice : dataUsername generated is = QWE000387769@as.bbi.co ","stream":"stdout""
执行上述命令后,输出为:
"Log: abcservice : dataUsername generated is = ******@as.bbi.co ","stream":"stdout""
内容的提问来源于stack exchange,提问作者sushant bhat
相关产品推荐
相关产品推荐

