Como seus arquivos parecem conter dados classificados, você deve poder usar o comando join
, por exemplo,
join -12 -21 -t: -o1.1,2.2 file1.txt file2.txt > output.txt
Então
cat output.txt
a2:c1
a4:c2
a5:c3
Veja man join
para detalhes das opções.
Se os arquivos forem não pré-classificados, você poderá classificá-los primeiro usando a substituição de processos. Observe, entretanto, que a classificação deve estar no campo no qual você deseja ingressar nos arquivos , por exemplo.
join -12 -21 -t: -o1.1,2.2 <(sort -t: -k2,2 file1.txt) <(sort -k1,1 file2.txt)
androgynous:hu2nt
gra7vel:fi6nal
cosm4etic:citizen
O resultado também estará em ordem de classificação: se você não quiser isso, há uma maneira bastante padrão de fazer esse tipo de coisa em awk
usando uma matriz, por exemplo.
awk -F: 'NR==FNR {a[]=; next;} ( in a) {print a[]":";}' file1.txt file2.txt