首页 > 解决方案 > 正则表达式替换 Linux shell 脚本中的密码?

问题描述

我有一个包含密码等参数的字符串。后面的任何内容-P都是密码,后跟其他一些参数,如 -H host 等。参数可以是任何顺序

例1:sh script.ksh -U test_user -P somepwd -H somehost

例 2:sh script.ksh -U test_user -H somehost -P somepwd

现在,我想用删除这个词替换密码

结果1:sh script.ksh -U test_user -P REMOVED -H somehost

结果2:sh script.ksh -U test_user -H somehost -P REMOVED

怎么样,有没有可能。我尝试了以下。

sed -i -E "s/(.*[-]P)(\b.*\b)(.*)/\1\something\3/" test_pwd_replace.txt

但是,它不起作用。请帮忙。

标签: regexlinuxshell

解决方案


你可以使用这个sed

sed -i -E 's/-P[[:blank:]]*[^[:blank:]]+/-P REMOVED/' test_pwd_replace.txt

[[:blank:]]等价于[ \t]匹配空格或制表符。


推荐阅读