Если столбцы двух файлов разделены табуляцией, а не пробелами (похоже, первый - второй, я не знаю; к сожалению, уценка SO не является вкладкой), это тривиальный join
:
$ join -12 -21 -o 0,2.2,1.1 -t$'\t' -a2 <(sort -t$'\t' -k2,2 file1.txt) <(sort -t$'\t' -k1,1 file2.txt)
1 John Lennon A
2 Mariah carey
3 Cool & The Gang C
4 Westlife
5 Red Hot Chili Peppers E
(join
требует, чтобы его файлы были отсортированы лексикографически по столбцу соединения, а не по номерам, следовательно, sort
s).
Если между номером и полосой в файле2 есть только пробел, сначала преобразуйте его во вкладку с помощью sed
:
join -12 -21 -o 0,2.2,1.1 -t$'\t' -a2 <(sort -t$'\t' -k2,2 file1.txt) <(sed 's/ /\t/' file2.txt | sort -t$'\t' -k1,1)