首页 > 数据库 >[20240902]建立完善sql_idz.sh脚本.txt

[20240902]建立完善sql_idz.sh脚本.txt

时间:2024-09-02 20:37:49浏览次数:15  
标签:idz 16 text cat 20240902 sh sql sed echo

[20240902]建立完善sql_idz.sh脚本.txt

--//增加hash_value的16进制显示采用大小写显示.

$ cat -v ~/bin/sql_idz.sh
#! /bin/bash
# calcucate sql_text of full_hash_value(16),hash_value(10),sql_id(32).
# argv1 sql statement or sql of text file
# argv2 flag: 0= sql statement 1=sql of text file for sqlplus  2=sql of text file for other 3=original
# argv3 default = '\0' add tailstr

odebug=${ODEBUG:-0}
oflag=${2:-0}
tailstr=${3:-'\0'}

if [ $oflag -eq 0 ]
then
    sql_text=${1}${tailstr}
fi

# sqlplus format sql_text
if [ $oflag -eq 1 ]
then
sql_text="$( cat $1 | sed -e "s/^M$//" -e "s/\s*$//" -e '$s/;$//')""${tailstr}"
# sql_text="$( cat $1 | unix2dos | sed '$s/;\s*$//')"'\0'
# sql_text="$( cat $1 | sed -e "s/^M$//" -e sed '$s/;\s*$//')"'\0'
# sql_text="$( cat $1 | sed '$s/;\s*$//')"'\0'
fi

# other format sql_text
if [ $oflag -eq 2 ]
then
sql_text="$( cat $1 | sed '$s/;\s*$//')""${tailstr}"
# sql_text="$( cat $1 | unix2dos | sed '$s/;\s*$//')"'\0'
# sql_text="$( cat $1 | sed -e "s/^M$//" -e '$s/;\s*$//')"'\0'
# sql_text="$( cat $1 | sed '$s/;\s*//')"'\0'
fi

# exact_matching_signature, force_matching_signature
if [ $oflag -eq 3 ]
then
    sql_text=${1}
fi

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')
v2=${v1:(-16):16}
v3=${v2:(-8):8}
# v2=$(echo "obase=16;ibase=16; $v1 % 10000000000000000" | bc| tr -d '\\\r\n')
# v3=$(echo "obase=10;ibase=16; $v1 % 100000000" | bc| tr -d '\\\r\n')

if [ $odebug -eq 1 ] ; then
        echo v1=$v1 v2=$v2 v3=$v3
fi

echo "sql_text = $sql_text"
echo "full_hash_value(16) = $v1 or ${v1,,}"

if [ $oflag -eq 3 ] ; then
        echo "xxxxx_matching_signature(10) = $(( 16#$v2 )) or " $(echo $(( 16#$v2 )) + 2^64|bc )
fi

echo "hash_value(10) = $(( 16#$v3 )) or hash_value(16) = $v3 or ${v3,,}"

BASE32=($(echo {0..9} {a..z} | tr -d 'eilo'))
res=''
for i in $(echo "obase=32;ibase=16; $v2" | bc| tr -d '\\\r\n')
do
        res=${res}${BASE32[$(( 10#$i ))]}
done
echo "sql_id(32) = $(printf "%13s" $res | tr ' ' '0')"
echo "sql_id(32) = $(printf "%013s" $res)"

res1=$(eval $(echo "obase=32;ibase=16; $v2" | bc| tr -d '\\\r\n' | awk 'BEGIN{RS=" +"; printf "echo " }/./{printf "${BASE32[$(( 10#%02d))]}", $1}' ))
echo "sql_id(32) = $(printf "%013s" $res1)"


标签:idz,16,text,cat,20240902,sh,sql,sed,echo
From: https://www.cnblogs.com/lfree/p/18393483

相关文章

  • uni-app v-if条件渲染和v-show的选择对比
    一,v-ifv-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回真值时才被渲染代码示例:<template> <viewclass=""> <viewv-if="shop">京东</view> <viewv-else>淘宝网</view> </view></template><scriptsetup>impor......
  • linux shell grep命令单字匹配
    grep.sh#!/bin/bashE_BADARGS=65if[-z"$1"];thenecho"Usage:`basename$0`pattern"exit$E_BADARGSfiechoforfilein*dooutput=$(sed-n/"$1"/p$file)if[!-z"$output"];thenecho-n"......
  • YOLOv10改进系列,YOLOv10替换主干网络为ShuffleNetV2
    原论文摘要目前,神经网络架构设计主要依赖于计算复杂度的间接指标,即浮点运算次数(FLOPs)。然而,直接指标(如速度)还取决于其他因素,如内存访问成本和平台特性。因此,本研究建议在目标平台上评估直接指标,而不仅仅考虑FLOPs。基于一系列受控实验,本研究提出了若干高效网络设计的实用......
  • 二维Hash
    前置知识:字符串hash我们定义一个字符串s的hash值为:\[\begin{aligned}\sum_{i=1}^ns[i]\timesp1^{(n-i)}\end{aligned}\]其中n是字符串的长度,i从1~n(下标从1开始),p1是一个稍微大一点的质数code: intp1=13331; unsignedlonglongh=0; for(inti=1;i<=n;i++......
  • Tushare Pro 新版发布,免费、开源的python财经数据接口包
     Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Py......
  • 20240902_171049 mysql 填空题 ddl表
    创建一个名为tb的表creatatabletb()创建一个名为tb的表,先判断再创建createtableifnotexiststb()新建一个student表,拷备teacher表的结构createtablestudentliketeacher删除一个名为student的表droptablestudent删除名为student的表,先判断再删除droptableif......
  • 获得SSH秘钥和SSL环境的可见性和控制权
    未经管理的密钥和证书如何损害分层安全防御系统多年来,由于技术的不断发展和演变,网络威胁和安全漏洞也在不断变化。企业大多都在精心研究各种解决方案和战略,以加强其安全基础设施。但是,安全问题是没有灵丹妙药的。目前,一种备受企业推崇并被广泛采用的一种技术是利用分层式信息安......
  • 20240902_162002 mysql 填空题 数据类型
    定义一个int类型的列,名为ageageint定义一个无符号的int类型的列,名为scorescoreintunsigned定义一个单精度小数类型的列,名为weightweightfloat定义一个双精度小数类型的列,名为weightweightdouble定义一个小数列,要求总长度为5,小数部分为2,列名为weightweightdecimal(5,......