Версия Perl, с отсортированным выводом:
$ perl -lane 'next if $. == 1; # Skip header line
$F[2] =~ s/^[^.]+\K.*//; $recs{$F[1]}{$F[2]} += $F[0];
END { $, = "\t"; print "Count", "Response", "URL";
for $resp (sort keys %recs) {
for $url (sort keys %{$recs{$resp}}) {
print $recs{$resp}{$url}, $resp, $url
}}}' input.txt
Count Response URL
3 400 data
18 400 homeloans
469 400 login
3 400 regions
44 400 search
2 422 login
139 422 newprojects
1 422 notification
1 500 example
1 500 search
И короткая и приятная версия с использованием GNU datamash (в этом предполагается, что столбцы разделены табуляцией; добавьте -W
к параметрам datamash, если нет).
$ cut -d. -f1 input.txt | datamash -Hs groupby 2,3 sum 1
GroupBy(Response) GroupBy(Url) sum(Count)
400 data 3
400 homeloans 18
400 login 469
400 regions 3
400 search 44
422 login 2
422 newprojects 139
422 notification 1
500 example 1
500 search 1
Выходные столбцы расположены в другом порядке, а заголовки - разные, но их легко настроить с помощью awk или чего-либо еще, если нужно.