Совершенно другой подход заключается в использовании облегченного инструмента SQL, например sqlite.
Вы можете создать две таблицы:
$ sqlite3
SQLite version 3.7.2
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table fruit (fruit varchar(20), id varchar(20));
sqlite> create table foobar (id varchar(20), foobar varchar(20));
установите TAB в качестве разделителя и загрузите ваши файлы:
sqlite> .separator "\t"
sqlite> .import file1 fruit
sqlite> .import file2 foobar
удалить заголовки:
sqlite> delete from fruit where id = 'ID';
sqlite> delete from foobar where id = 'ID';
затем выполните все необходимые запросы:
sqlite> select fruit.id, fruit, foobar from fruit, foobar where fruit.id = foobar.id;
alpha apple cat
beta banana dog
sqlite> .quit
$
Также можно автоматизировать задачу с помощью bash здесь:
#!/bin/bash
sqlite3 <<-EOF
create table fruit (fruit varchar(20), id varchar(20));
create table foobar (id varchar(20), foobar varchar(20));
.separator "\t"
.import file1 fruit
.import file2 foobar
delete from fruit where id = 'ID';
delete from foobar where id = 'ID';
select fruit.id, fruit, foobar from fruit, foobar where fruit.id = foobar.id;
.quit
EOF