Não sei se entendi o que você deseja, não ficou claro, e não tem muitos dados.
Imaginando que a lista para pesquisa é no estilo do que informou acima, e que o resultado deverá ser tipo abaixo:
Arquivo1 4 ocorrências
Arquivo2 4 ocorrências
ArquivoX 2 ocorrências
ArquivoN 1 ocorrências
Vou te apresentar um script. Como disse eu peguei os dados apresentados acima, e a rotina esta filtrando por usuário (parâmetro solicitado), e listando os arquivos que mais aparecem para ele.
Além disto coloquei como parâmetro quantas linhas você deseja que sejam mostradas, deixando um pouco mais dinâmico.
Ai vai o script, se tiver entendido errado me desculpe.
#!/bin/bash
#
# Cristiano
# 22/jul/2008
#
# Parâmetros
arq_pesquisa="testegrep.dados" # Nome do arquivo que será pesquisado
# Pega nome do usuário e testa se foi informado algo
usuario=`zenity --title "Pesquisa arquivos" --text "Nome do usuário a pesquisar" --entry `
test ! "$usuario" && zenity --error --title "Pesquisa arquivos" --text "Usuário não informado" && exit
# Pega número de resultados a apresentar e consiste se foi informado algo, e se é um número
nro_entradas=`zenity --title "Pesquisa arquivos" --text "Número de entradas a apresentar" --entry `
test ! "$nro_entradas" && zenity --error --title "Pesquisa arquivos" --text "Número de entradas não informadas" && exit
expr $nro_entradas + 1 > /dev/null 2> /dev/null
test $? -ne 0 && zenity --error --title "Pesquisa arquivos" --text "Não foi informado um número válido" && exit
# Informa as linhas que casam, e o número de repetidas.
zenity --info --title "Resultado para: $usuario" --text "`cat $arq_pesquisa | grep $usuario | grep .$ext | cut -f7 -d" " | uniq -c | sort -r | head -n $nro_entradas`"