Shell格式化数字以逗号分开

事情起源于要完全用shell做一个html格式的report, report中很多金额要格式化成123,456,789.12345这个样子.于是就单独写了一个格式化数字的shell.

#!/bin/ksh result='' amt=$1 length=`echo $amt | awk '{ print length($0) }'` if [ length -eq 0 ];then echo '' exit 0 fi if [ amt -lt 0 ];then prefix='-' amt=`echo $amt | cut -c 2-$length` else prefix='' fi dot_pos=`echo $amt | awk '{print index($1,".")}'` if [ $dot_pos -ne 0 ];then amt_int=`echo $amt | cut -c 1-$(($dot_pos-1))` amt_float=.`echo $amt | cut -c $(($dot_pos+1))-$length` else amt_int=$amt amt_float='' fi length=`echo $amt_int | awk '{ print length($0) }'` mod=$(($length%3)) div3=$(($length/3)) if [ $mod -ne 0 ];then result=`echo $amt_int | cut -c 1-$mod` fi pstart=$(($mod+1)) pend=$(($mod+3)) i=0 while [ $i -lt $div3 ] do part=`echo $amt_int | cut -c ${pstart}-${pend}` if [ -z $result ];then result=$part else result=`echo $result,$part` fi pstart=$(($pstart+3)) pend=$(($pend+3)) let i+=1 done echo $prefix$result$amt_float

你可能感兴趣的:(linux基础和shell,shell,float,report,div,html)