我有一个配置文件,其中包含各种设备的条目,每个条目用空行分隔。我需要在文件中搜索给定设备类型的所有实例,并计算发生后非空白行的数量,在第一个空白处停止。
例如:
服务器= FOO
配置行1
配置行2
config line 3服务器=酒吧
配置行1
config line 2服务器= FOO
config line 1
如果我想知道有多少“配置行”与服务器“foo”相关联,我应该得到四个。你能帮忙吗?
我在AIX 5.3上。它没有pcregrep。 :( Grep,sed和awk都是我可以访问的。
答案 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=//'