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