- 论坛徽章:
- 0
|
本帖最后由 j3kljs02398j 于 2011-09-05 13:09 编辑
只用grep基本做不到,因为grep是基于行处理的。要提取内容是 server { ...{} ... }标记的。所以想到用的是sed和awk。
第一种: 直接命令调用- sed '1,/^ server {$/d' filename | awk -v count=1 '{\
- if ($NF == "{")
- count++
- if ($1 == "}")
- count--
- if (count == 0)
- exit 0
- print $0
- }' > result
复制代码 第二种: 放在shell脚本中执行(便于批处理)- #! /bin/sh
- #用法
- #get_conf filename[s]
- umask 022
- while [ "$1" != "" ];
- do
- sed '1,/^ server {$/d' $1 | awk -v count=1 '{\
- if ($NF == "{")
- count++
- if ($1 == "}")
- count--
- if (count == 0)
- exit 0
- print $0
- }'
- shift
- done
复制代码 注意:
两种方法中,对于配置文件的格式要求很严格,"{"前一定要有空格且作为本行的末尾,“}"独自一行。否则出错! |
|