Se os valores couberem na memória, o que você deve 'até 500', e dependendo exatamente do que você quer, awk
provavelmente poderá fazê-lo em um passe e (pelo menos na maior parte) em um processo.
Para listar todos os valores que ocorrem uma vez, em ordem arbitrária, se houver mais de um:
awk '!n[$2++]{a[$2]=$1} END{for(v in n)if(n[v]==1)print a[v],v}'
# can pipe output to a suitable sort if you want a specific order
# or for GNU awk 4, you can get several non-arbitrary orders
# (less than GNU sort) using PROCINFO["sorted_in"] see the manual
Para listar um valor que ocorre uma vez, se houver pelo menos um:
awk '!n[$2++]{a[$2]=$1} END{for(v in n)if(n[v]==1){print a[v],v;exit}}'
Para listar um valor que ocorre uma vez e, caso contrário, indicar que não há nenhum:
awk '!n[$2++]{a[$2]=$1} END{for(v in n)if(n[v]==1){print a[v],v;exit};print "no unique entry"}'