#!/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":"|","' '{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!"