Chinaunix首页 | 论坛 | 博客
  • 博客访问: 240061
  • 博文数量: 37
  • 博客积分: 325
  • 博客等级: 一等列兵
  • 技术积分: 1199
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-09 00:04
个人简介

坚持原创,虽然有些东西很简单,但也算是一种积累。

文章分类

全部博文(37)

文章存档

2013年(28)

2012年(9)

我的朋友

分类: 系统运维

2013-06-18 13:44:53

关于正则,本人不是很懂,对于复杂的应用更是没有经验。所以类似这种找到匹配之前前面几行,后面几行之类的(行范围)操作。我用如下方法替代了。当然如果是涉及到效率之类的,可能还是得好好研究下正则或是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
}
阅读(2194) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~