假设您有一个包含密码和其他分类数据的大型配置文件。该文件将来可能会更改。我想用占位符替换这种数据,例如***
使用bash创建当前配置的版本而不包含分类信息。
该文件的格式为:
user_foo=Foo
foo_pwd=12345
user_bar=Bar
bar_password_x=42
a.passwd=asdf
并且应该转换为
user_foo=Foo
foo_pwd=***
user_bar=Bar
bar_password_x=***
a.passwd=***
某些脚本接受包含在受让人左侧的字符串黑名单(例如“pwd”,“password”,“passwd”)可能就是这样做的。
不幸的是,我不是bash的专家,但也许有一个基于sed或awk的优雅解决方案。
答案 0 :(得分:3)
尝试:
awk 'BEGIN{FS="="; OFS="="; } $1 ~ /pwd|password|passwd/ {$2="***"}1' inputfile
对于您的输入,它应该发出:
user_foo="Foo"
foo_pwd=***
user_bar="Bar"
bar_password_x=***
a.passwd=***
答案 1 :(得分:2)
使用sed:
sed -r 's/((pwd|password|passwd)[^=]*=).*/\1***/' input > output
答案 2 :(得分:1)
使用awk
awk -F= '$1~/pwd|password|passwd/ {$2="***"}1' OFS="="
user_foo=Foo
foo_pwd=***
user_bar=Bar
bar_password_x=***
a.passwd=***