1

假设您有一个包含密码和其他分类数据的大型配置文件。该文件将来可能会更改。我想用占位符替换这种数据,例如***使用 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 的优雅解决方案。

4

3 回答 3

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=***
于 2013-09-19T08:46:42.740 回答
2

使用 sed:

sed -r 's/((pwd|password|passwd)[^=]*=).*/\1***/' input > output
于 2013-09-19T08:47:49.310 回答
1

使用awk

awk -F= '$1~/pwd|password|passwd/ {$2="***"}1' OFS="="
user_foo=Foo
foo_pwd=***
user_bar=Bar
bar_password_x=***
a.passwd=***
于 2013-09-19T08:47:28.830 回答