regex - 正则表达式替换 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
但是,它不起作用。请帮忙。
解决方案
你可以使用这个sed
:
sed -i -E 's/-P[[:blank:]]*[^[:blank:]]+/-P REMOVED/' test_pwd_replace.txt
[[:blank:]]
等价于[ \t]
匹配空格或制表符。
推荐阅读
- docker - 当没有提供 ENTRYPOINT 并且在没有可执行文件的 Exec Form 中使用 CMD 时,Docker 中执行了什么?
- python - 如何在 Python 中获取二维数组(行主要顺序)中的下一个和上一个值?
- for-loop - 如何使用一些 sql 代码在 for 循环中遍历下一个批处理文件
- html - 提交按钮将无法正确排列
- c++ - CMake 无法找到 SDL2_ttf,我正在尝试以与 SDL2 相同的方式链接它,并且两者都正确安装在 Ubuntu 18.04 上
- javascript - HTMLDialogElement.showModal() 的反义词是什么?
- c++ - 如果不需要参数,是否应该使用 argc 和 argv?
- vim - YouCompleteMe 在 Mac Mojave 上安装 libclang 时抛出 (35) SSL 连接错误
- r - 在 dplyr 链中重命名以包装功能标题
- kubernetes - 根据初始连接将流量定向到 Kubernetes Pod