急,请教shell编程的一个问题。。。

发布于 2022-10-15 07:40:50 字数 2107 浏览 16 评论 0

我要根据host_name在下面的文件中提取一段内容。而shell脚本中是以回车或者空格为记录分隔符。但是我想要根据 host_name关键字(比如 mail )从文件中提取define 开始到 } 的内容要怎么做呢?
#define service {
#        host_name             136_stats
#        service_description   check_ssh
#        check_period          full_period
#        max_check_attempts    4
#        normal_check_interval 2
#        retry_check_interval  1
#        contact_groups        admins
#        notification_interval   10
#        notification_period     full_period
#        notification_options    u,c,r
#        check_command      check_ssh!-p 22 115.182.52.136
#        }

# Define a service to "check temp"

define service {
        host_name mail
        service_description check_temp
        check_period full_period
        max_check_attempts 4
        normal_check_interval 3
        retry_check_interval 2
        contact_groups admins
        notification_interval 10
        notification_period full_period
        notification_options u,c,r
        check_command nrpe!check_temp
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

浮生面具三千个 2022-10-22 07:40:50

我要根据host_name在下面的文件中提取一段内容。而shell脚本中是以回车或者空格为记录分隔符。但是我想要根 ...
zhnghaijin 发表于 2011-05-07 01:00

    提醒你一下,这个求助应该发在shell版块,很快会有牛人帮你解答,哈哈

携君以终年 2022-10-22 07:40:50

我要根据host_name在下面的文件中提取一段内容。而shell脚本中是以回车或者空格为记录分隔符。但是我想要根 ...
zhnghaijin 发表于 2011-05-07 01:00

    我帮你在shell版问的答案,SHELL_HAT版主提供的答案:
awk '/{/{$0="\n"$0}/}/{$0=$0"\n"}1' urfile | awk -v RS= '/ host_name mail/'

隔纱相望 2022-10-22 07:40:50

回复 4# shplpy

    这个不行,我已经自己写出来了,花了我一上午,NND。新手就是比较囧。。。。
    废话不多说,公布答案:awk 'BEGIN{  find_sec=0;RS = ""}{ if($0 ~/define/) find_sec=1; if(find_sec==1&&/'$hostname'/) {print $0}} '  urfile

顾冷 2022-10-22 07:40:50

回复 4# shplpy

    谢谢你啊,我去看了你的帖子,看来是可以的,但是我这边不行,情况可能比较有特殊,我研究下你提供的答案。。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文