我有一个包含参数(如密码等)的字符串。-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

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

最佳答案

您可以使用此sed:

sed -i -E 's/-P[[:blank:]]*[^[:blank:]]+/-P REMOVED/' test_pwd_replace.txt
[[:blank:]]等效于与空格或制表符匹配的[ \t]

10-07 22:29