写了一个shell脚本,主要是做文本处理,大概是读取一个文件的内容,对每行的内容做匹配,如果匹配关键字符的话,就取出来,后续做echo显示。
大部分都是这种语句:
if [[ $LINE =~ "^SIB : " ]]
then
sib=`echo $LINE | awk '{ print $NF }' | sed 's/://g'`
continue
# echo $sib
fi
if [[ $LINE =~ "^Optics [0-9]*:" ]]
then
optics_slot=`echo $LINE | awk '{ print $2 }' | sed 's/://g'`
optics_status=`echo $LINE | awk '{ print $NF }'`
if [[ "$optics_status" =~ "NOT_SUPPORTED" ]] || [[ "$optics_status" =~ "MODULE_ABSENT" ]] || [[ "optics_status" =~ "MODULE_FAULT" ]]
then
echo "$router $sib $optics_slot $optics_status"
fi
continue
fi
if [[ $LINE =~ "^Vendor " ]]
then
vendor=`echo $LINE | awk '{ print $4 }'`
version=`echo $LINE | awk '{ print $9 "." $NF }'`
# echo $vendor $version
continue
fi
写完之后,发现执行的特别慢。一个1万行的文本文件,要执行1分钟左右。
请问这是awk、sed执行的性能问题吗?还是我的脚本使用函数的方式不对?