Если awk
может быть рассмотрено для этого, вы можете попробовать это:
awk -F' *[AB]: *' '{a[$2","$3]++;next}END{print "A","B","Count";for(i in a){print i,a[i]}}' OFS=',' file | column -t -s','
-F
опция устанавливает разделитель либо A:
или B:
.
Массив a
, заполненный числом B
вхождения строки.
Оператор END
печатает заголовок и цикл по массиву для печати строки и счетчика.
Наконецкоманда column
выводит результат в виде таблицы.
В ответ на последнее изменение OP, возможный путь вперед - определить строку с помощью опции -v
и просмотреть эту строку с помощью ~
команда регулярных выражений.
awk -F' *[AB]: *' -v h1="Hello World" -v h2="Hello" -v h3="Hi there" '$3~h1{a[$2","h1]++;next}$3~h2{a[$2","h2]++;next}$3~h3{a[$2","h3]++;next}END{print "A","Key","Count";for(i in a){print i,a[i]}}' OFS=',' file | column -t -s','