Подсчет вхождений обычно выполняется путем отслеживания счетчика.Таким образом, одну из строк awk ОП;
awk '{if($1~/A/) print $0}' < test.txt | wc
можно переписать как
awk '($1~/A/){c++}END{print c}' test.txt
для нескольких случаев, теперь вы можете сделать:
awk '($1~/A/){c["A"]++}
($1~/B/){c["B"]++}
($1~/D/){c["D"]++}
END{for(i in c) print i,c[i]}' test.txt
СейчасВы можете даже очистить это немного больше:
awk '{c["A"]+=($1~/A/)}
{c["B"]+=($1~/B/)}
{c["D"]+=($1~/D/)}
END{for(i in c) print i,c[i]}' test.txt
, который вы можете очистить как:
awk 'BEGIN{split("A B D",a)}
{for(i in a) c[a[i]]+=($1~a[i])}
END{for(i in c) print i,c[i]}' test.txt
Но эти случаи просто подсчитывают, сколько раз встречается строка, содержащаяписьмо, а не сколько раз письмо встречается.
awk 'BEGIN{split("A B D",a)}
{for(i in a) c[a[i]]+=gsub(a[i],"",$1)}
END{for(i in c) print i,c[i]}' test.txt