亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3360 | 回復(fù): 8
打印 上一主題 下一主題

如果用grep命令準(zhǔn)確的提取出nginx.conf中虛擬主機(jī)的信息? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-09-04 15:58 |只看該作者 |倒序?yàn)g覽
本帖最后由 dowson521 于 2011-09-04 16:27 編輯

請教各位 問題RT
試了半天了 不知道如何能準(zhǔn)確提取出來
先謝謝各位了
我隨便截取一個(gè)配置文件 就是以“一個(gè)空格+server{ ”開頭 然后以最后一個(gè)“}”結(jié)束

中間這一段 怎么提取啊?
PS:主要是由于要收集所有NGINX服務(wù)器的虛擬主機(jī)設(shè)置,然后入庫
如果有其他的方法的話 也好 不一定非要用grep 因?yàn)榇罄ㄌ柕臄?shù)量是不確定的
所以我想不到其他什么方法了
請教各位大大

論壇徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年紀(jì)念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役紀(jì)念章
日期:2022-04-24 14:33:24
2 [報(bào)告]
發(fā)表于 2011-09-04 16:19 |只看該作者
nginx.conf的內(nèi)容貼出來看看,說清楚你要提取哪部分

論壇徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:55:28
3 [報(bào)告]
發(fā)表于 2011-09-04 17:48 |只看該作者
寫了個(gè)笨方法:

  1. #!/bin/bash
  2. >vhost.conf
  3. i=0
  4. while read line;do
  5.     if [ "`echo $line|grep 'server {'`" != "" ]
  6.     then
  7.         ((i++))
  8.         echo $line>>vhost.conf
  9.         continue
  10.     fi
  11.     if [ $i -gt 0 ];then
  12.         echo $line>>vhost.conf
  13.        if [ "`echo $line|grep '{'`" != "" ];then
  14.            ((i++))
  15.        fi
  16.        if [ "`echo $line|grep '}'`" != "" ];then
  17.            ((i--))
  18.        fi
  19.     fi
  20. done < nginx.conf
復(fù)制代碼

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2011-09-04 18:08 |只看該作者
本帖最后由 j3kljs02398j 于 2011-09-05 13:09 編輯

只用grep基本做不到,因?yàn)間rep是基于行處理的。要提取內(nèi)容是 server { ...{} ... }標(biāo)記的。所以想到用的是sed和awk。
第一種: 直接命令調(diào)用
  1. sed '1,/^ server {$/d' filename | awk -v count=1 '{\
  2.                 if ($NF == "{")
  3.                         count++
  4.                 if        ($1 == "}")
  5.                         count--
  6.                 if  (count == 0)
  7.                         exit 0
  8.                 print $0
  9.         }' > result
復(fù)制代碼
第二種: 放在shell腳本中執(zhí)行(便于批處理)
  1. #! /bin/sh

  2. #用法
  3. #get_conf filename[s]


  4. umask 022
  5. while [ "$1" != "" ];
  6. do
  7.         sed '1,/^ server {$/d' $1 | awk -v count=1 '{\
  8.                 if ($NF == "{")
  9.                         count++
  10.                 if        ($1 == "}")
  11.                         count--
  12.                 if  (count == 0)
  13.                         exit 0
  14.                 print $0
  15.         }'
  16.         shift
  17. done
復(fù)制代碼
注意:
兩種方法中,對于配置文件的格式要求很嚴(yán)格,"{"前一定要有空格且作為本行的末尾,“}"獨(dú)自一行。否則出錯(cuò)!

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2011-09-04 18:16 |只看該作者
腳本的思路:
1.先用sed刪除開頭行到 “server {”行的內(nèi)容
2.處理配置信息
   最主要的是找到配置信息的結(jié)束標(biāo)志 "}", 因?yàn)榕渲眯畔⒗镉卸鄠(gè)"{","}",所以用到棧的思想,這里簡單計(jì)數(shù)解決,學(xué)過編程的都會的。

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2011-09-04 19:37 |只看該作者
樓上高見!!!

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2011-09-05 11:29 |只看該作者
腳本的思路:
1.先用sed刪除開頭行到 “server {”行的內(nèi)容
2.處理配置信息
   最主要的是找到配置信息的 ...
j3kljs02398j 發(fā)表于 2011-09-04 18:16



    如果里面有句這樣的東西:
var="fjiemf}"

會不會有問題?

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2011-09-05 13:08 |只看該作者
如果里面有句這樣的東西:
var="fjiemf}"

會不會有問題?
mpstat 發(fā)表于 2011-09-05 11:29

這個(gè)不會有問題,因?yàn)?quot;fjiemf}" 是ar的值,不是作為邊界。
如果這么寫: var="fjiemf" }就不行。作為一段結(jié)束的 "}" 一定要單行,因?yàn)閍wk讀$1來進(jìn)行判斷。

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2011-09-06 12:10 |只看該作者
謝謝大家的回復(fù)
我這里也有一個(gè)辦法

是一個(gè)同事做的

awk '/^(.*)server {/,/}\\n}/' /usr/local/nginx/conf/nginx.conf

我試了一下 也可以的 最后要多以個(gè) "}"
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP