- 论坛徽章:
- 0
|
本帖最后由 zhjwlgh01 于 2016-06-03 11:15 编辑
求大神帮忙简化一个脚本,我写的实在太丑了。。。这个是关于数值转化的,例如有一个数字是 0,0,255, 先将三个数字转成二进制的,不足八位的补成八位,得到00000000,00000000,11111111。 然后第一个数取高五位,第二个取高六位,第三个取高五位,得到00000,000000,11111. 再拼接在一起,得到0000000000011111. 最后分成4份,每份4个数,再转成十六进制的。我写的脚本如下,请大神帮忙修改的简单一点。
#!/bin/sh
Usage()
{
echo "Error Usage"
echo "./565_color_key.sh ./1.txt"
echo ""
}
if [ ! -e $1 ]; then
Usage
fi
#count the number of rows
CH=` awk '{print NR}' $1 | tail -n1`
for ((i=1; i<$CH ; i=$i+1))
do
A1=`cat $1 | sed -n "$i"p | awk -F "," '{print $1}'`
A2=`cat $1 | sed -n "$i"p | awk -F "," '{print $2}'`
A3=`cat $1 | sed -n "$i"p | awk -F "," '{print $3}'`
B1=`echo "obase=2;$A1"|bc`
B2=`echo "obase=2;$A2"|bc`
B3=`echo "obase=2;$A3"|bc`
C1=`echo $B1 | awk '{print length($0)}'`
C2=`echo $B2 | awk '{print length($0)}'`
C3=`echo $B3 | awk '{print length($0)}'`
if [ $C1 -eq 1 ]; then
D1=`echo 0000000$B1 | cut -b 1-5`
elif [ $C1 -eq 2 ]; then
D1=`echo 000000$B1 | cut -b 1-5`
elif [ $C1 -eq 3 ]; then
D1=`echo 00000$B1 | cut -b 1-5`
elif [ $C1 -eq 4 ]; then
D1=`echo 0000$B1 | cut -b 1-5`
elif [ $C1 -eq 5 ]; then
D1=`echo 000$B1 | cut -b 1-5`
elif [ $C1 -eq 6 ]; then
D1=`echo 00$B1 | cut -b 1-5`
elif [ $C1 -eq 7 ]; then
D1=`echo 0$B1 | cut -b 1-5`
else
D1=`echo $B1 | cut -b 1-5`
fi
if [ $C2 -eq 1 ]; then
D2=`echo 0000000$B2 | cut -b 1-6`
elif [ $C2 -eq 2 ]; then
D2=`echo 000000$B2 | cut -b 1-6`
elif [ $C2 -eq 3 ]; then
D2=`echo 00000$B2 | cut -b 1-6`
elif [ $C2 -eq 4 ]; then
D2=`echo 0000$B2 | cut -b 1-6`
elif [ $C2 -eq 5 ]; then
D2=`echo 000$B2 | cut -b 1-6`
elif [ $C2 -eq 6 ]; then
D2=`echo 00$B2 | cut -b 1-6`
elif [ $C2 -eq 7 ]; then
D2=`echo 0$B2 | cut -b 1-6`
else
D2=`echo $B2 | cut -b 1-6`
fi
if [ $C3 -eq 1 ]; then
D3=`echo 0000000$B3 | cut -b 1-5`
elif [ $C3 -eq 2 ]; then
D3=`echo 000000$B3 | cut -b 1-5`
elif [ $C3 -eq 3 ]; then
D3=`echo 00000$B3 | cut -b 1-5`
elif [ $C3 -eq 4 ]; then
D3=`echo 0000$B3 | cut -b 1-5`
elif [ $C3 -eq 5 ]; then
D3=`echo 000$B3 | cut -b 1-5`
elif [ $C3 -eq 6 ]; then
D3=`echo 00$B3 | cut -b 1-5`
elif [ $C3 -eq 7 ]; then
D3=`echo 0$B3 | cut -b 1-5`
else
D3=`echo $B3 | cut -b 1-5`
fi
E=$D1$D2$D3
F1=`echo $E | cut -b 1-4`
G1=`echo "obase=16; ibase=2; $F1" | bc`
F2=`echo $E | cut -b 5-8`
G2=`echo "obase=16; ibase=2; $F2" | bc`
F3=`echo $E | cut -b 9-12`
G3=`echo "obase=16; ibase=2; $F3" | bc`
F4=`echo $E | cut -b 13-16`
G4=`echo "obase=16; ibase=2; $F4" | bc`
H=0x$G1$G2$G3$G4
echo $H >> ./565_color_key.txt
done
|
|