急,请教shell编程的一个问题。。。
我要根据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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
提醒你一下,这个求助应该发在shell版块,很快会有牛人帮你解答,哈哈
我帮你在shell版问的答案,SHELL_HAT版主提供的答案:
awk '/{/{$0="\n"$0}/}/{$0=$0"\n"}1' urfile | awk -v RS= '/ host_name mail/'
回复 4# shplpy
这个不行,我已经自己写出来了,花了我一上午,NND。新手就是比较囧。。。。
废话不多说,公布答案:awk 'BEGIN{ find_sec=0;RS = ""}{ if($0 ~/define/) find_sec=1; if(find_sec==1&&/'$hostname'/) {print $0}} ' urfile
回复 4# shplpy
谢谢你啊,我去看了你的帖子,看来是可以的,但是我这边不行,情况可能比较有特殊,我研究下你提供的答案。。。。