自定义取不同产品的日志

#!/bin/sh
####    根据用户需要随机取指定月份的随机音频和对应日志
##    记录
##    2018.08.24 增加获取转写结果功能

####    清空已提取的日志和音频    ####
home_dir=`pwd`
rm -rf log.zip
rm -rf aud.zip

####    自定义查找的产品, 年月,不能早于2015年    ####
function zidingyi(){
echo "which do you want to check ~"
select i in ASR IST
do    
    if [[ $i != ASR ]] && [[ $i != IST ]];then
        echo "wrong choice! please choose again~"
    continue
    fi
break
done
echo -n "please input year and month you want to check~[201805 or 201712] : "
read yea_mon
echo "the date you input is :"$yea_mon
mon=${yea_mon:4:2}
yea=${yea_mon:0:4}

####    要求年份必须大于2015年    ####
if [[ $yea_mon"QAZ" == QAZ || $yea -le 2015  || ${#yea_mon} -ne 6 ]];then
    echo "the date you entered is illegal,please check~"
    exit 
fi

####    对月份进行处理    ####其实1~9是多余的####
case $mon in 
1|01 )    Month=01Jan ;;
2|02 )    Month=02Feb ;;
3|03 )    Month=03Mar ;;
4|04 )    Month=04April ;;
5|05 )    Month=05May ;;
6|06 )    Month=06June ;;
7|07 )    Month=07July ;;
8|08 )    Month=08Aug ;;
9|09 )    Month=09Sept ;;
10 )    Month=10Oct ;;
11 )    Month=11Nov ;;
12 )    Month=12Dec ;;
*)
    echo "the month you entered is illegal,please check~"
    exit
esac

####    根据产品初始化查找的目录及音频和日志格式    ####
if [ $i = ASR ];then
        file_dir=`find / -name "$Month" |grep "$yea"|grep callLogs|grep lasrsvc|tail -1`
        audio=wav
        llog=log
else [ $i == "IST" ]
        file_dir=`find / -name "$Month" |grep "$yea"|grep pc20onli|tail -1`
        audio=aud
        llog=LOG
fi

####    如果查找不到则提示用户并退出    ####
if [ $file_dir"wsx" == wsx ];then
    echo "there are no logs in "$yea""$mon"月。"
    exit
fi
echo "当前需要查询的目录为:"$file_dir
}


####    查找最新的一条日志    ####
function zuixinrizhi(){
rm -rf tmp.txt
if [ $i == ASR ]; then
    audio_file=`ls -RF $file_dir |tail -10|grep "$audio"|tail -1`
    find "$file_dir" -name "$audio_file" -exec ls -tr {} \;|tail -1|awk -F 'ISR-' '{print $1}' > tmp.txt
    aud=`cat tmp.txt`
else
    audio_file=`ls -RF $file_dir |tail -10|grep "$audio"|tail -1`
    find "$file_dir" -name "$audio_file" -exec ls -tr {} \;|tail -1|awk -F 'ATS-' '{print $1}' > tmp.txt
    aud=`cat tmp.txt`
fi
}


####    进入日志月份文件夹,并随机取音频记录    ####
function qusuijiyinpin(){
if [ $i == ASR ]; then
    cd $aud/../../
else
    cd $aud/../../../
fi

rm -rf name.txt
echo "finding audio~ please wait a moment~"

####    随机取月份内音频    #### 
if [ $i = ASR ]; then
     ####    由于随机取值时间较长,打印随机取值次数    ####
    find -size +5k -name ISR-0[1,2,3]-3[1,3,5,7]-*"$audio" >> aud_dir.txt
    echo "Get random values 1 times ~"
    find -size +5k -name ISR-1[7,8,9]-4[2,4,6,8]-*"$audio" >> aud_dir.txt
    echo "Get random values 2 times ~"
    find -size +5k -name ISR-2[1,2,3]-5[3,7,4,9]-*"$audio" >> aud_dir.txt
    echo "Get random values 3 times ~"
    find -size +5k -name ISR-3[4,5,6]-2[1,3,5,7]-*"$audio" >> aud_dir.txt
    echo "Get random values 4 times ~"
    find -size +5k -name ISR-4[4,5,6]-3[2,4,6,8]-*"$audio" >> aud_dir.txt
    echo "Get random values 5 times ~"
    find -size +5k -name ISR-5[4,5,6]-4[3,5,9,6]-*"$audio" >> aud_dir.txt
    echo "Get random values 6 times ~"
    find -size +5k -name ISR-0[7,8,9]-1[0,1,2,3]-*"$audio" >> aud_dir.txt
    echo "Get random values 7 times ~"
    find -size +5k -name ISR-1[1,2,3]-3[0,1,2,3]-*"$audio" >> aud_dir.txt
    echo "Get random values 8 times ~"
    find -size +5k -name ISR-2[7,8]-5[0,1,2,3]-*"$audio" >> aud_dir.txt
    echo "Get random values 9 times ~"
    awk -F 'ISR-' '{print $2}' aud_dir.txt|awk -F '-utt' '{print $1}' >> name.txt
else
    find -size +5k -name *"$Month"-0[1,2,3]-0[1,3,5,7]-*"$audio" >> aud_dir.txt
    echo "Get random values 1 times ~"
    find -size +5k -name *"$Month"-1[7,8,9]-0[2,4,6,8]-*"$audio" >> aud_dir.txt
    echo "Get random values 2 times ~"
    find -size +5k -name *"$Month"-2[1,2,3]-0[3,7,4,9]-*"$audio" >> aud_dir.txt
    echo "Get random values 3 times ~"
    find -size +5k -name *"$Month"-0[4,5,6]-1[1,3,5,7]-*"$audio" >> aud_dir.txt
    echo "Get random values 4 times ~"
    find -size +5k -name *"$Month"-1[4,5,6]-1[2,4,6,8]-*"$audio" >> aud_dir.txt
    echo "Get random values 5 times ~"
    find -size +5k -name *"$Month"-2[4,5,6]-1[3,5,9,6]-*"$audio" >> aud_dir.txt
    echo "Get random values 6 times ~"
    find -size +5k -name *"$Month"-0[7,8,9]-2[0,1,2,3]-*"$audio" >> aud_dir.txt
    echo "Get random values 7 times ~"
    find -size +5k -name *"$Month"-1[1,2,3]-2[0,1,2,3]-*"$audio" >> aud_dir.txt
    echo "Get random values 8 times ~"
    find -size +5k -name *"$Month"-2[7,8]-2[0,1,2,3]-*"$audio" >> aud_dir.txt
    echo "Get random values 9 times ~"
    awk -F 'ATS-201' '{print $2}' aud_dir.txt|awk -F 'raw-utt' '{print $1}' >> name.txt
fi

result_no=`awk 'END{print NR}' name.txt`

####    判断当前日志条数是否大于所需,若大于则删除,若小于则提醒用户并继续执行    ####
if [ $result_no -ge $num ]
then
    let "del = $num + 1"
    sed -i ''$del',$d' name.txt
    echo "data pick fineshed~"
elif [ $result_no == 0 ];then
    echo "found no random logs in "$mon"月,exit"
    exit
else
    echo "There are no many logs in "$mon"月,continue~"
fi
}

####    提取音频名和日志名到临时文本文档    ####
function baocunrizhiyinpin(){
while read line 
do
    find -name "*"$line"*"$audio >> aud.txt
    find -name "*"$line"*"$llog >> log.txt
done < name.txt
echo "zipping file"
nb=`awk 'END{print NR}' name.txt`
echo "there are $nb records have been found~"
sleep 2s
}

####    找音频和日志并压缩到aud.zip和log.zip中    ####
function zipfile(){
rm -rf name.txt
cat aud.txt|while read line
do
    zip -rq aud.zip $line
done
rm -rf aud.txt
cat log.txt|while read line
do
    zip -rq log.zip $line
done
echo -n "files have been zipped ,do you want to get recognize-result [yes or no] : "
read getresult
if [[ $getresult != yes ]] || [[ $getresult != no ]];then
    echo "wrong choice , exit getresult ~"
fi
}

####    提取音频及对应的日志    ####
function getresult(){
    if [[ $getresult == yes ]];then
        mkdir zancun
        unzip -d zancun log.zip
        unzip -d zancun aud.zip
        #############    时间排序    ##############
        ls -tr `find -name *aud` > dir.txt
        echo `find -name *aud |wc -l`" audio has been found."
        sleep 1s
        echo  "Reading logs ,Please wait."
        sleep 1s
        #############    查找音频    ##############
        awk -F'ATS' '{print "ATS"$2}' dir.txt >> aud.txt
        i=1
        while read line
        do
        cat `find -name ${line%%utt01-.aud}"LOG"`|grep "QISRGetResultAsyn"|awk -F'quot;w&quot;:&quot;|&quot;,&quot' '{print "'$line' "  $2$4$6$8$10$12$14$16$18$20$22$24$26$28$30$32$34$36$38$40$42$44$46$48$50$52$54$56$58$60$62$64$66$68$70$72$74$76$78$80$82$84$86$88$90$92$94$96$98$100$102$104$106$108$110$112$114$116$118$120$122$124$126$128$130$132$134$136$138$140$142$144$146$148$150$152$154$156$158$160$162$164$166$168$170$172$174$176$178$180$182$184$186$188$190$192$194$196$198$200}' >> $home_dir/result.txt
        #echo $i" Reading:"${line%%utt01-.aud}"LOG"
        done < aud.txt
        rm  dir.txt
        rm  aud.txt
    fi
}

####    执行子函数    ####
zidingyi
echo -n "Please input the number of logs you want get : "
read num
zuixinrizhi
rm -rf tmp.txt
qusuijiyinpin
rm -rf aud_dir.txt
echo "finding logs~ please wait a moment~"
rm -rf aud.txt
rm -rf log.txt
baocunrizhiyinpin
zipfile
rm -rf log.txt
mv *zip $home_dir


echo "work has been finished,please check!"

 

posted @ 2019-03-23 11:02  唐大侠的小迷弟  阅读(152)  评论(0编辑  收藏  举报