免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3960 | 回复: 7
打印 上一主题 下一主题

[文本处理] 如何删除关键字上一行和下面多行的内容? [复制链接]

论坛徽章:
2
狮子座
日期:2014-08-15 00:24:232015元宵节徽章
日期:2015-03-06 15:52:30
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-03-20 02:00 |只看该作者 |倒序浏览
本帖最后由 djzhangxing 于 2015-03-20 02:01 编辑

下面是一段nagios的配置文件,如果机器下线的现在需要手动找配置文件的IP再删除,但是多台的话会影响效率,我想写个脚本,读取IP列表自动删除。
假如说我想下掉10.200.94.65这个监控,我需要把红色标记的内容删除掉,membere的一个单ip可以sed替换null,下面define如何删除这块的内容呢,求助。
cat host.conf
define hostgroup{
        hostgroup_name          ops-shop
        alias                   shop
        members                 10.200.94.65,10.200.94.110,10.100.58.173
        }
###############################################################################
define host{
        host_name                       10.200.94.65
        address                         10.200.94.65
        check_command                   check-host-alive
        max_check_attempts              4
        check_period                    24x7
        contact_groups                  shop-ops,shop-ops-email
        notification_interval           10
        notification_period             24x7
        notification_options            d,u,r
        }

define host{
        host_name                       10.200.94.110
        address                         10.200.94.110
        check_command                   check-host-alive
        max_check_attempts              4
        check_period                    24x7
        contact_groups                  shop-ops,shop-ops-email
        notification_interval           10
        notification_period             24x7
        notification_options            d,u,r
        }
define host{
        host_name                       10.200.94.173
        address                         10.200.94.173
        check_command                   check-host-alive
        max_check_attempts              4
        check_period                    24x7
        contact_groups                  shop-ops,shop-ops-email
        notification_interval           10
        notification_period             24x7
        notification_options            d,u,r

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
2 [报告]
发表于 2015-03-20 02:40 |只看该作者
  1. members="10.200.94.65"
  2. sed -i '/members/s/'${members}',*//;/define host{/{:1;N;/}/!b1;/'${members}',*/d}' host.conf
复制代码

论坛徽章:
7
申猴
日期:2014-12-21 13:57:24巳蛇
日期:2014-12-25 22:27:08申猴
日期:2015-01-19 08:07:36辰龙
日期:2015-02-04 11:40:06处女座
日期:2015-02-04 11:40:412015年亚洲杯之卡塔尔
日期:2015-03-06 12:01:322015年亚洲杯之乌兹别克斯坦
日期:2015-03-31 13:43:57
3 [报告]
发表于 2015-03-20 08:16 |只看该作者
本帖最后由 goofool 于 2015-03-20 08:20 编辑
  1. awk 'BEGIN{RS="}"}/10.200.94.65/{next}{print $0RT}'
复制代码
  1. awk -va="10.200.94.65" 'BEGIN{RS="}"}match($0,a){next}{print $0RT}'
复制代码

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
4 [报告]
发表于 2015-03-20 08:58 |只看该作者
本帖最后由 zxy877298415 于 2015-03-20 08:59 编辑
  1. awk -v RS="define" -v k="10.200.94.65" '{if($1~/host{/&&$0~k) {$0=""} else if($1~/hostgroup{/&&$0~k) {sub(k",","");print p $0} else {print p $0}}{p=RT}' file
复制代码
回复 1# djzhangxing


   

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
5 [报告]
发表于 2015-03-20 08:59 |只看该作者
本帖最后由 zsszss0000 于 2015-03-20 09:12 编辑
  1. sed '/members/{s/10.200.94.65[,]//g};/define host{/{:a;N;/}/bend;ba;:end;/10.200.94.65/d};' file
复制代码
  1. cat host.conf
  2. define hostgroup{
  3.         hostgroup_name          ops-shop
  4.         alias                   shop
  5.         members                 10.200.94.110,10.100.58.173
  6.         }
  7. ###############################################################################
  8. define host{
  9.         host_name                       10.200.94.110
  10.         address                         10.200.94.110
  11.         check_command                   check-host-alive
  12.         max_check_attempts              4
  13.         check_period                    24x7
  14.         contact_groups                  shop-ops,shop-ops-email
  15.         notification_interval           10
  16.         notification_period             24x7
  17.         notification_options            d,u,r
  18.         }
  19. define host{
  20.         host_name                       10.200.94.173
  21.         address                         10.200.94.173
  22.         check_command                   check-host-alive
  23.         max_check_attempts              4
  24.         check_period                    24x7
  25.         contact_groups                  shop-ops,shop-ops-email
  26.         notification_interval           10
  27.         notification_period             24x7
  28.         notification_options            d,u,r
复制代码
  1. awk -vRS="}" -vORS="}\n" -vIP="10.200.94.65" 'NR==1{gsub(IP",","")}NR!=1{if($0~IP)next;}1' file
复制代码

论坛徽章:
28
2015年迎新春徽章
日期:2015-03-04 10:16:53午马
日期:2015-03-20 17:11:07亥猪
日期:2015-03-20 17:11:23戌狗
日期:2015-03-20 17:11:33酉鸡
日期:2015-03-20 17:11:47申猴
日期:2015-03-20 17:11:58未羊
日期:2015-03-20 17:12:10子鼠
日期:2015-03-20 17:12:23丑牛
日期:2015-03-20 17:12:40卯兔
日期:2015-03-20 17:12:51辰龙
日期:2015-03-20 17:13:00巳蛇
日期:2015-03-20 17:13:12
6 [报告]
发表于 2015-03-20 09:06 |只看该作者
  1. awk -vRS='}' '{$0~/p{/?sub(/10.200.94.65[,]?/,"",$0):sub(/\ndefine.*10.200.94.65.*/,"",$0);printf $0~/{/?$0RT:$0}' inputfile
复制代码

论坛徽章:
2
狮子座
日期:2014-08-15 00:24:232015元宵节徽章
日期:2015-03-06 15:52:30
7 [报告]
发表于 2015-04-02 01:18 |只看该作者
本帖最后由 djzhangxing 于 2015-04-02 01:24 编辑

感谢,烦请讲解下/define host{/{:1;N;/}/!b1的含义,没看明白,也没查到资料。 回复 2# WilliBhamlll


   

论坛徽章:
2
狮子座
日期:2014-08-15 00:24:232015元宵节徽章
日期:2015-03-06 15:52:30
8 [报告]
发表于 2015-04-02 01:21 |只看该作者
本帖最后由 djzhangxing 于 2015-04-02 01:25 编辑

感谢,烦请讲下/define host{/{:a;N;/}/bend;ba;:end;,小弟没看明白,求讲解。 回复 5# zsszss0000


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP