Обычная старая версия bash , использующая массивы.
#!/bin/bash
declare -A values letters dates
while read date letter; do
values[$date$letter]=$(( ${values[$date$letter]} + 1 ))
letters[$letter]=1
dates["$date"]=1
done <file.txt
echo ' ' ${!letters[@]} | sed 's/ /\t/g'
for date in ${!dates[@]}; do
printf "%-8s\t" $date
for letter in ${!letters[@]}; do
printf "%s\t" ${values[$date$letter]}
done
echo
done