2010-07-25 5 views
2

Предположим, у меня есть два файла с разделителями табуляции, которые разделяют столбцы. Оба файла имеют строку заголовка, которая дает метку для каждого столбца. Какой простой способ принять объединение двух таблиц, т. Е. Взять столбцы из A и B, но сделать это в соответствии со значением столбца K?Объединение файлов с разделителями табуляции на основе значения столбца

, например, таблица А может быть:

employee_id name 
123 john 
124 mary 

и в таблице Б может быть:

employee_id age 
124 18 
123 22 

то объединение основано на колонке 1 таблицы А ("employee_id") должны в результате чего получали таблица:

employee_id name age 
123 john 22 
124 mary 18 

я хотел бы сделать это с помощью утилиты Unix, как «вырезать» и т.д., как это может быть сделано?

+0

почему Джон, имеющий 18-летнего возраста и не 22? опечатка? – ghostdog74

ответ

4

это начало. Я оставляю вам форматировать заголовки по мере необходимости

$ awk 'NR>1{a[$1]=a[$1]" "$2}END{for(i in a)print a[i],i}' tableA.txt tableB.txt 
age employee_id 
john 22 123 
mary 18 124 

другой путь

$ join <(sort tableA.txt) <(sort tableB.txt) 
123 john 22 
124 mary 18 
employee_id name age 

эксперимент с Соединить вариантов, когда это необходимо (см страницу информации или справочную страницу)

5

вы можете использовать утилиту join , но ваши файлы должны быть отсортированы первыми.

join file1 file2 

man join для получения дополнительной информации

Смежные вопросы