Как насчет использования join?
join -12 -22 -a1 -e 0 -o'0,1.1,2.1' f1 f2
Надеюсь, это то, что вы хотите. Полям, у которых нет совпадения, будет дано 0
.
$ cat f1
3 09
9 10
10 11
28 12
27 13
23 14
$ cat f2
10 10
11 11
29 12
25 13
25 14
$ join -12 -22 -a1 -e 0 -o'0,1.1,2.1' f1 f2
09 3 0
10 9 10
11 10 11
12 28 29
13 27 25
14 23 25
Команда объединения объединяет строки двух файлов, которые имеют общее поле данных. В этом случае: Соедините файл2 и файл1, используя поле 1 (-1 2) файла f2 и поле 2 (-2 2) файла f1.
Вывод будет: joined field, field 1 of file1, field 1 of file2
- -o'0,1.1,2.1'
, если отсутствует поле, поставить 0
-e0
Если в одном из двух файлов больше записей, добавьте их (в данном случае file1) -a1