Сопоставление двух файлов с кодами awk - PullRequest
0 голосов
/ 24 сентября 2011

Есть два файла

first.file

  • M1
  • M2
  • M3

...

second.file

  • А1 М1
  • А2 М1
  • А2 М3
  • A3 M2
  • A3 M4
  • A3 M5

....

Я хочу сопоставить first.file и second.file Мой файл результатов должен быть таким:

result.file

  • А1 М1
  • А2 М1
  • А2 М3
  • A3 M2

Как я могу сделать это с помощью кода awk?

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 24 сентября 2011
awk '
  BEGIN { while (getline < "first.file") { file1[$0]=1 } }
  $2 in file1 { print }
' <second.file
2 голосов
/ 24 сентября 2011

Используйте ниже:

grep -f firstfile secondfile

grep достаточно. хотя мы можем сделать это и с awk, я предпочитаю grep

Если вы все еще настаиваете на awk, тогда у меня есть очень простое решение и в awk.

awk 'FNR==NR{a[$0];next}($0 in a)' file2 file1

Пояснение:

Поместить записи file2 в массив. Затем выполняйте итерацию file1, каждый раз находя эти записи в массиве.

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