使用awk
(有点冗长但更通用,并且会屏蔽分布在多行中的密码。)
awk 'f&&/:/{print $0;f=0;next}f&&!/:/{gsub(/[^ ]/,"*",$0)}/Password:/{gsub(/./,"*",$2);f=1}1' file
测试:
JS웃$ cat file
Profile: id=standard,ou=groups,ou=access,ou=data,o=abc,c=au
Password: 3412783561b897b8979878c9789798d89789789
d49a5e3b8ff353844454
fadfadf
agww2342342
id: account 1 0
JS웃$ awk 'f&&/:/{print $0;f=0;next}f&&!/:/{gsub(/[^ ]/,"*",$0)}/Password:/{gsub(/./,"*",$2);f=1}1' file
Profile: id=standard,ou=groups,ou=access,ou=data,o=abc,c=au
Password: ***************************************
********************
*******
***********
id: account 1 0
更新:
awk 'f&&/:/{print $0;f=0;next}f&&!/:/{next}/Password:/{gsub(/.*/,"*********",$2);f=1}1' file
测试:
[JS웃:~/Temp]$ awk 'f&&/:/{print $0;f=0;next}f&&!/:/{next}/Password:/{gsub(/.*/,"*********",$2);f=1}1' file
Profile: id=standard,ou=groups,ou=access,ou=data,o=abc,c=au
Password: *********
id: account 1 0