Use join
.
Parece que alterar o primeiro caractere de espaço no arquivo para algo diferente de espaço será suficiente para converter os registros delimitados por espaços em branco de arquivos.
Aqui está uma implementação que substitui o primeiro espaço com %
e depois é unida na segunda coluna de cada arquivo.
$ cat file2 | sed -e 's/ /%/' | join -1 2 -2 2 - file1
ou
$ <file2 sed -e 's/ /%/' | join -1 2 -2 2 - file1
que produz
model1 class%C Toyota
model2 class%E BMW
model3 class%A Benz
model4 class%W BMW
model5 class%W BMW
model6 class%C Benz
model7 class%A Benz
Se você precisar convertê-lo em um formato delimitado por tabulação, use tr
.
tr ' %' '\t '