Awk, чтобы получить столбец file1 и проверить column1 файла2, если совпадения, то распечатайте соответствующее значение - PullRequest
0 голосов
/ 08 июля 2020

Я пытаюсь сравнить первый столбец файла file1 с первым столбцом файла file2. если есть совпадение-> распечатайте соответствующее значение, которое находится в столбце 2 файла2

Проверил некоторые предложения, но не нашел правильный код.

file1 (single column)
987
675
21
23
21
2645

file2 (two columns)
234 def
987 one
22  abc
21  two
675 three
24  rty
25  qwe

Ожидаемый результат:

one
three
two
two

Я использую:

awk 'FNR==NR { r[$1] = $0; next; } r[$1] { print r[$1]; next }' file2 file1

и получаю следующее:

987 one
675 three
21  two
21  two

Есть предложения? Спасибо!

1 Ответ

1 голос
/ 08 июля 2020

это должно работать ...

$ awk 'FNR==NR{r[$1]=$2; next} $1 in r{print r[$1]}' file2 file1

по сути, если вы не хотите печатать первое поле, просто сохраните второе поле в своем массиве r.

второй next избыточен; также проверьте наличие поля в массиве с помощью in, поскольку значение может быть нулем (или пустой строкой), и в этом случае r[$1] будет ложным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...