下面是我的脚本,它有很多性能问题
#!/usr/bin/ksh
while read i
do
x=`echo $i |cut -d"|" -f2`
rem=`expr $x % 62`
echo "reminder is " $rem
quo=`expr $x / 62`
echo "quotiont is " $quo
grp_rem=" "
if [[ ${#quo} -ge 2 ]]
then
while [ $quo -ge 62 ]
do
sub_rem=`expr $quo % 62`
quo=`expr $quo / 62`
grp_rem=`echo $sub_rem" "$grp_rem`
done
fi
echo $i"|"$quo" "$grp_rem" "$rem >> base62_while.out
done < base62_while.txt
Run Code Online (Sandbox Code Playgroud)
无论如何,我可以使用上述脚本提高性能吗?
样本输入:
1|5147634738948389685
Run Code Online (Sandbox Code Playgroud)
样本输出
1|5147634738948389685|6 8 16 13 46 17 20 35 9 49 43
Run Code Online (Sandbox Code Playgroud)
您不需要调用任何外部工具:ksh 可以进行算术运算。我还使用数组来存储余数
#!/usr/bin/ksh
div=62
while IFS='|' read -r n x; do
rem=$(( x % div ))
quo=$(( x / div ))
echo "reminder is $rem" >&2
echo "quotiont is $quo" >&2
remainders=( $rem )
while (( quo >= div )); do
sub_rem=$(( quo % 62 ))
quo=$(( quo / 62 ))
echo "reminder is $sub_rem" >&2
echo "quotiont is $quo" >&2
remainders=( $sub_rem "${remainders[@]}" )
done
echo "$n|$x|$quo ${remainders[*]}"
x=$quo
for r in "${remainders[@]}"; do
x=$(( x * div + r ))
done
echo Verification: $x
done <<END
1|5147634738948389685
END
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
237 次 |
最近记录: |