ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [20211011]计算sql_id.sh脚本的一些补充.txt

[20211011]计算sql_id.sh脚本的一些补充.txt

原创 Linux操作系统 作者:lfree 时间:2021-10-11 08:48:57 0 删除 编辑

[20211011]计算sql_id.sh脚本的一些补充.txt

--//前几天改了计算sql_id的脚本,同时发现一些问题.
--//我的计算如下:
v1=$(echo -e -n "$sql_text" | md5sum | sed 's/  -//' | xxd -r -p | od -t x4 |  sed   -n  -e 's/^0\+ //' -e 's/ //gp' | tr 'a-z' 'A-Z')

1.问题1:
--//别人问的问题,为什么使用md5sum后,还有许多步骤,实际上计算出来的结果还要4个字节对调一下,才是正确的full_hash_value.
--//对调我使用xxd -r -p | od -t x4完成.
--//我估计与CPU类型有关,INTEL系列的这样计算没有问题,其它都没有环境,无法测试.

2.问题2:
--// md5sum后的过滤 sed 's/  -//'是多余的.
--//cygwin下执行:
$ echo -e -n a | md5sum
0cc175b9c0f1b6a831c399e269772661 *-

--//linux下执行:
$ echo -e -n a | md5sum
0cc175b9c0f1b6a831c399e269772661  -
--//与linux的对比多出了一个*.
$ echo -e -n a | md5sum | xxd -r -p | od -t x4
0000000 b975c10c a8b6f1c0 e299c331 61267769
0000020

--//如果你仔细检查发现转换结果是对的.很明显*-字符被xxd -r -p 给忽略了.

$ echo -n 0cc175b9c0f1b6a831c399e269772661 | xxd -r -p | od -t x4
0000000 b975c10c a8b6f1c0 e299c331 61267769
0000020

$ echo -n 0cc175b9c0f1b6a831c399e269772661a | xxd -r -p | od -t x4
0000000 b975c10c a8b6f1c0 e299c331 61267769
0000020

$ echo -n 0cc175b9c0f1b6a831c399e269772661az | xxd -r -p | od -t x4
0000000 b975c10c a8b6f1c0 e299c331 61267769
0000020

$ echo -n 0cc175b9c0f1b6a831c399e269772661ab | xxd -r -p | od -t x4
0000000 b975c10c a8b6f1c0 e299c331 61267769
0000020 000000ab
0000021

$ echo -n 0cc175b9c0f1b6a831c399e269772661AC | xxd -r -p | od -t x4
0000000 b975c10c a8b6f1c0 e299c331 61267769
0000020 000000ac
0000021

--//注意看输出,我在结尾增加a,az,ab.可以发现单个字符a结果不变,加入ab,输出结果发生变化.
--//结尾加入az,与加入a结果一样,也就是要对齐边界.
--//可以发现xxd -r -p仅仅接受16进制字符0-9,a-f,A-F.
--//最佳方式修改如下:

v1=$(echo -e -n "$sql_text" | md5sum | awk "{print $1}" | xxd -r -p | od -t x4 |  sed   -n  -e 's/^0\+ //' -e 's/ //gp' | tr 'a-z' 'A-Z')

$ echo -e -n a | md5sum | awk "{print $1}" | xxd -r -p | od -t x4 |  sed   -n  -e 's/^0\+ //' -e 's/ //gp' | tr 'a-z' 'A-Z'
B975C10CA8B6F1C0E299C33161267769


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2795255/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969461