соответствующие столбцы из двух файлов - PullRequest
0 голосов
/ 21 июня 2010

У меня есть два файла, в которых первый столбец может иметь одинаковые значения.Я хотел бы сопоставить первый столбец обоих файлов и распечатать строки в FILE1, для которых было найдено совпадение.

FILE1:
xxx1 yyy yyy yyy
xxx2 yyy yyy yyy
xxx3 yyy yyy yyy

FILE2:
xxx3 zzzz
xxx4 zzzz

OUTPUT:
xxx3 yyy yyy yyy

Любые предложения приветствуются.

С наилучшими пожеланиями

Ответы [ 3 ]

3 голосов
/ 21 июня 2010
1 голос
/ 23 июня 2010

Вот мой рецепт:

awk 'key[$1]; FNR==NR {key[$1]=1}' file2 file1

Я предполагаю, что оба списка отсортированы по ключу (первый столбец), и каждый ключ появляется только один раз в файле.Первый шаблон сокращен до:

key[$1] != 0

В этом случае действие по умолчанию - печать всей строки.Этот шаблон неявно работает для второго файла (file1) только потому, что для первого файла ключ не был помечен.Во втором шаблоне:

FNR==NR {key[$1]=1}

FNR == NR означает, что мы обрабатываем первый файл (в данном случае file2).В этом случае мы помечаем ключ для дальнейшего использования.

1 голос
/ 21 июня 2010
awk 'FNR==NR{ a[$1]=$0;next } ($1 in a)' file2 file1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...