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