Aqui está uma maneira:
$ awk -F"[, ]" 'NR==FNR{a[$1]=$1","$2; next} ($2 in a){print a[$2]","$1}' file1 file2
1000,Brian,3044
400,Nick,4466
1010,Jason,1206
O -F"[, ]" define o separador de campos como um espaço ou uma vírgula. FNR é o número da linha atual e NR do número da linha atual do arquivo atual. Os dois serão iguais apenas enquanto o primeiro arquivo estiver sendo lido. Portanto, NR==FNR{a[$1]=$1","$2; next} será executado apenas nas linhas do primeiro arquivo e salvará o primeiro e o segundo campos (com uma vírgula no meio) como valores na matriz a cujas chaves são os primeiros campos. Então, quando o segundo arquivo estiver sendo lido, se o segundo campo estiver em a , imprimiremos o valor associado a ele (o primeiro e o segundo campos do primeiro arquivo) e o primeiro campo do segundo arquivo.
Dito isso, há realmente um aplicativo para isso! Esse tipo de coisa é para o qual join foi feito. Infelizmente, como os seus dois arquivos não estão classificados e possuem diferentes delimitadores, precisamos de alguns truques. Se o seu shell suporta <() , você pode fazer:
$ join -t, -1 1 -2 2 <(sort file1) <(sed 's/ /,/g' file2 | sort -t"," -k2)
1000,Brian,3044
1010,Jason,1206
400,Nick,4466
O join -t, -1 1 -2 2 significa usar , como o delimitador e unir no primeiro campo do arquivo1 e no segundo campo do arquivo2. O sed apenas substitui espaços por vírgulas, por isso temos o mesmo delimitador em ambos os arquivos. O sort faz o que diz na garrafa: classifica sua entrada.