2010-05-12 60 views
1

我有一個配置文件,其中包含各種設備的條目,每條條目以空行分隔。我需要在文件中搜索給定設備類型的所有實例,並計算髮生後非空行的數量,並在第一個空白處停止。我需要從匹配的配置文件條目中計數行,最好使用'grep'

例如:

服務器= FOO
配置行1
配置行2
配置行3

服務器=酒吧
配置行1
配置行2

Server = foo
配置線1

如果我想知道總共有多少「配置線」與服務器「foo」相關聯,我應該得到四個。你能幫忙嗎?

我在AIX 5.3上。它沒有pcregrep。 :(grep的,戰略經濟對話和awk都是我訪問

回答

2

這個簡單的awk腳本將告訴您您需要的信息:

#!/usr/bin/awk -f  

$1 ~ /^Server=/ { 
    server = $1; 
} 

($0 != "") && ($1 !~ /^Server=/) { 
    count[server] += 1 
} 

END { 
    for (server in count) { 
     print server, count[server] 
    } 
} 

您可能需要調整的/ usr/bin中/ AWK路徑匹配你如果在counter腳本把這個代碼,它並調用它是這樣的:

./counter < config 

你比如說配置將輸出以下內容:

Server=foo 4 
Server=bar 2 

如果您需要擺脫服務器的=在行的開頭,你可以把它管道的sed:

./counter < config | sed 's/^Server=//'