我需要计算匹配配置文件条目的行数,最好是'grep'

时间:2010-05-12 14:32:58

标签: awk count grep aix

我有一个配置文件,其中包含各种设备的条目,每个条目用空行分隔。我需要在文件中搜索给定设备类型的所有实例,并计算发生后非空白行的数量,在第一个空白处停止。

例如:

  

服务器= FOO
  配置行1
  配置行2
  config line 3

     

服务器=酒吧
  配置行1
  config line 2

     

服务器= FOO
  config line 1

如果我想知道有多少“配置行”与服务器“foo”相关联,我应该得到四个。你能帮忙吗?

我在AIX 5.3上。它没有pcregrep。 :( Grep,sed和awk都是我可以访问的。

1 个答案:

答案 0 :(得分: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

如果您需要在行的开头删除Server =,可以通过sed管道:

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