Присоединитесь к двум файлам, сохраняющим порядок элемента одного из них

У меня есть два файла

File1

03873
03872
03871
03870
......

File2

00001    0.867
00002    0.855
00003    0.864
00004    0.855
...
03870    0.825
03871    0.852
03872    0.326
03873    0.852

Я хочу добавить значения в II столбцах File 2 в File 1, хранение порядка элемента это File 1 имеет.

File3

03873    0.852
03872    0.326
03871    0.852
03870    0.825
......

Я мог сделать это с join, но я не хочу сортировать File 1. Я думавший использовать awk

awk -F "\t" 'FNR==NR{a[$1]=$0; next}$1 in a {print a[$1]"\t"$2}' File1  File2 

Но также и в этом случае я отсортировал данные. Какая-либо идея, как сделать это?

2
задан 30 March 2015 в 20:40

1 ответ

Ваш awk не сортирует. Вывод печатается в порядке, в котором это найдено file2 и это отсортировано. Сохранять порядок найденным в file1, просто инверсия это (я также удалил бесполезное a[$1]"\t"$2, Вы уже сохраняли $0 в a):

$ awk -F "\t" 'FNR==NR{a[$1]=$0; next}$1 in a {print a[$1]}' file2 file1 
03873   0.852   
03872   0.326   
03871   0.852   
03870   0.825   
4
ответ дан 30 March 2015 в 20:40

Другие вопросы по тегам:

Похожие вопросы: