У меня есть конфигурационный файл, который имеет записи для различных устройств с каждой записью, разделенной пустой строкой. Я должен искать файл все экземпляры данного типа устройства и считать количество непустых строк после возникновения, останавливающегося в первом пробеле.
Например:
Server=foo
строка конфигурации 1
строка конфигурации 2
строка конфигурации 3Server=bar
строка конфигурации 1
строка конфигурации 2Server=foo
строка конфигурации 1
Если бы я хотел знать, сколько общих "строк конфигурации" было связано с сервером "нечто", я должен добраться четыре. Можно ли помочь?
Я нахожусь на AIX 5.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
, он и вызовет его следующим образом:
./counter < config
Он выведет следующее для вашего примера конфигурации:
Server=foo 4
Server=bar 2
Если вам нужно избавиться от Server = в начале строк, вы можете передать его через sed:
./counter < config | sed 's/^Server=//'