Tudo bem, isso não é bonito, mas pelo menos funciona.
cat restaurants.txt | sed 's/;.*//' | tr "," "\n" | tr " " "\n" | grep -v '^$' | sort | uniq -c | sort -r
2 Sam
2 Max
1 Shelly
1 Sarah
1 Kellyn
1 Jasmine
1 Helen
Explicação:% sed 's/;.*//' remove todo o texto após os pontos e vírgulas como (; Applebees)
tr "," "\n" uniq só funciona por linha, então substitua vírgulas por novas linhas
tr " " "\n" limpa todos os espaços extras, dando a eles sua própria linha (opcional)
grep -v '^$' Exclui todas as linhas vazias
sort classifica
uniq -c conta duplicatas
sort -f organiza em ordem decrescente