Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2072535
  • 博文数量: 470
  • 博客积分: 10206
  • 博客等级: 上将
  • 技术积分: 5620
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 12:50
文章分类

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2009-07-27 09:25:50

| | | |
[] [] [] [] []

风云使者




CU编号: 159553
注册:2004-5-20
最后登录: 2009-07-24
帖子:
精华:







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-7-23 09:09 



CODE:
define host{
    use windows-server
    host_name serverA
    hostgroups 060202
    alias 060202
    contact_groups yu
    address 192.168.1.1
}

以 上是nagios配置文件里的一段,这样的define host {}的段很多,现在要求根据IP地址删除相应的段,比如要删除IP是192.168.1.1的段,就在配置文件里找到上面这一段,从"define host{"到"}"全部删除,段与段之间以一个空行分开。



您对本贴的看法:
| | |
  帅哥
天使



CU编号: 75493
注册:2003-7-25
最后登录: 2009-07-27
帖子:
精华:0







来自:Hangzhou
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-7-23 09:16 

这样会不会有误删?

CODE:
awk 'BEGIN{RS="";FS="\n"}$0!~/192\.168\.1\.1/{print}' urfile




您对本贴的看法:
| | |
  帅哥 (Tim)
法师


CU奥运火炬传递手2008
CU编号: 465018
注册:2006-9-13
最后登录: 2009-07-27
帖子:
精华:0







来自:长春
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-7-23 09:19 

回复 #1 sailer_sh 的帖子

try:

sed '/define host/{:a;N;/}/!ba;/192\.168\.1\.1/d}' urfile



您对本贴的看法:

__________________________________

记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。
| | |
  帅哥 (☭)
风云使者
斗战胜佛(Linux初学者)



CU编号: 748015
注册:2008-8-19
最后登录: 2009-07-27
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-7-23 09:57 

awk 'BEGIN{RS=""} $0!~/192\.168\.1\.1/{print }' urlfile



您对本贴的看法:

__________________________________


打倒“五毛党”
| | |
  美女
大天使



CU编号: 779843
注册:2008-11-2
最后登录: 2009-07-27
帖子:
精华:







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-7-23 10:40 



QUOTE:
原帖由 ly5066113 于 2009-7-23 09:19 发表
try:

sed '/define host/{:a;N;/}/!ba;/192\.168\.1\.1/d}' urfile

还是这种的要好些



您对本贴的看法:

__________________________________


| | |
  帅哥
精灵使




CU编号: 322958
注册:2005-10-12
最后登录: 2009-07-26
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-7-23 11:42 

学习了。



您对本贴的看法:
| | |

精灵




CU编号: 1127759
注册:2009-3-16
最后登录: 2009-07-26
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-7-23 13:09 



QUOTE:
原帖由 ly5066113 于 2009-7-23 09:19 发表
try:

sed '/define host/{:a;N;/}/!ba;/192\.168\.1\.1/d}' urfile

看不懂,能否详细解释一下?



您对本贴的看法:
| | |
  帅哥 (狼烟)
天使
八十万色狼总教头



CU编号: 547805
注册:2007-4-5
最后登录: 2009-07-26
帖子:
精华:0







来自:北京
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-7-23 13:19 

回复 #7 小木虫子 的帖子

逻辑伪码:

if 匹配"define host"
    :a
    追加下一行
   if 不匹配"{"
        goto a

if 匹配"192.168.1.1"
    清空pattern space
else
    输出pattern space



您对本贴的看法:
| | |
(ö)
光明使者



CU编号: 3155
注册:2002-1-29
最后登录: 2009-07-25
帖子:
精华:







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-7-24 22:46 

需要略加改进,头尾加上限定符,防止误判:
echo '
define host{
    use windows-server
    host_name serverA
    hostgroups 060202
    alias 060202
    contact_groups yu
    address 192.168.1.1
}

define host{
    use windows-server
    host_name serverA
    hostgroups 060202
    alias 060202
    contact_groups yu
    address 192.168.1.11
}

define host{
    use windows-server
    host_name serverA
    hostgroups 060202
    alias 060202
    contact_groups yu
    address 192.168.1.21
}

'|sed '/define host/{:a;N;/}/!ba;/address \+192\.168\.1\.1\n/d}'

define host{
    use windows-server
    host_name serverA
    hostgroups 060202
    alias 060202
    contact_groups yu
    address 192.168.1.11
}

define host{
    use windows-server
    host_name serverA
    hostgroups 060202
    alias 060202
    contact_groups yu
    address 192.168.1.21
}



您对本贴的看法:
| | |

光明使者




CU编号: 428579
注册:2006-6-9
最后登录: 2009-07-26
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-7-26 21:42 

vim

匹配192.168.1.11的行删除整个{}块,同时删除{所在行
g/192.168.1.11$/normal da{|dd




阅读(845) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~