关于正则,本人不是很懂,对于复杂的应用更是没有经验。所以类似这种找到匹配之前前面几行,后面几行之类的(行范围)操作。我用如下方法替代了。当然如果是涉及到效率之类的,可能还是得好好研究下正则或是awk、sed复杂应用了。
附上一个应用场景:---正则的话也就是一句搞定。
#------escalations 添加删除子函数------
escalations()
{
#$1 add 添加,$1 del 删除
#对service变量进行处理(格式转换serivce1 service2转换成Process_service1,Process_service2)
escal_service=`echo $service |awk '{for (i=1;i<=NF;i++) printf",""Process_"$i}'`
row=`wc -l escalations.cfg |awk '{print$1}'`
for ((i=1;i<=row;i++));do
match_content=`sed -n $i{/#$ip/p} escalations.cfg`
if [ "$match_content" != "" ];then
echo "现在是第$i行"
#在第一次发现$ip的下面10行--也就是escalations配置服务名称的位置(escalations函数插入)
result_row=`expr $i + 10`
case $1 in #新增或是删除
add)
sed -i $result_row{s/$/$escal_service/} escalations.cfg
;;
del)
sed -i ${result_row}s/,$del_service//g escalations.cfg
;;
esac
fi
done
}
阅读(2174) | 评论(0) | 转发(0) |