bash - 向多个文件中的现有哈希脚本添加更多哈希
问题描述
我有使用 md5 哈希将密码存储到 MySQL 的 php 脚本文件
这是该 php 文件中的一些现有查询代码
some query part....,MD5('$pass'),.....some query part
一些脚本有小写的 md5
some query part....,md5('$pass'),.....some query part
我的目标是向现有代码添加另一个哈希,例如 sh1
所以预期的查询脚本应该是这样的
some query part....,sh1(MD5('$pass')),.....some query part
最后,当前的 md5 是小写还是大写都无关紧要
我尝试使用 sed 替换该文件,但没有运气
sed -i 's/md5\(.*\)/sha1\(md5\(.*\)\)/gI' *.php
有没有人可以帮助我?
谢谢
解决方案
您可以使用
sed -i 's/\bmd5([^()]*)/sha1(&)/gI' *.php
POSIX BRE 表达式匹配:
\b
- 单词边界md5(
- 一个md5(
子串[^()]*
- 0 个或多个字符,而不是(
and)
)
- 一个)
字符。
sha1(&)
替换模式替换匹配 woth ,然后替换sha1(
匹配值,然后)
。
查看在线演示:
s='some query part....,MD5('"'"'$pass'"'"'),.....some query part
some query part....,md5('"'"'$pass'"'"'),.....some query part'
sed 's/\bmd5([^()]*)/sha1(&)/gI' <<< "$s"
输出:
some query part....,sha1(MD5('$pass')),.....some query part
some query part....,sha1(md5('$pass')),.....some query part
推荐阅读
- vb.net - 如何找到正确的窗口 - Process Win 32 VB.NET
- canvas - 将画布 API 集成到对话流聊天机器人或任何聊天机器人?
- macos - 无法通过网络访问外部驱动器
- firebase - FirebaseMLVision:架构 x86_64 的未定义符号:
- logging - 用于根据源 pod 进行解析的 Fluentd 配置
- reactjs - 如何在 Redux 中正确清理和重写数组
- c# - 预处理器指令不能在 C# 中放入 AND
- jooq - JOOQ 代码生成:Gradle 插件中的 tinyint 到布尔值
- wordpress - Woocommerce API (Woo Dashboard github)
- r - 错误:stat_count() 只能具有 x 或 y 美学