Awk 我需要从匹配的配置文件条目中计算行数,最好使用';grep';

Awk 我需要从匹配的配置文件条目中计算行数,最好使用';grep';,awk,count,grep,aix,Awk,Count,Grep,Aix,我有一个配置文件,其中包含各种设备的条目,每个条目之间用一个空行分隔。我需要在文件中搜索给定设备类型的所有实例,并计算发生后的非空行数,在第一个空行处停止 例如: 服务器=foo 配置行1 配置行2 配置行3 服务器=bar 配置行1 配置行2 服务器=foo 配置行1 如果我想知道总共有多少“配置行”与服务器“foo”关联,我应该得到四行。你能帮忙吗 我使用的是AIX5.3。它没有pcregrep:(Grep、sed和awk是我可以访问的全部内容。这个简单的awk脚本将告诉您需要的信息: #!

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

例如:

服务器=foo
配置行1
配置行2
配置行3

服务器=bar
配置行1
配置行2

服务器=foo
配置行1

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


我使用的是AIX5.3。它没有pcregrep:(Grep、sed和awk是我可以访问的全部内容。

这个简单的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 < config
如果需要删除行开头的Server=,可以通过sed进行管道传输:

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