使用awk代码匹配两个文件

时间:2011-09-24 15:50:47

标签: file awk matching

有两个文件

first.file

  • M1
  • M2
  • M3

...

second.file

  • A1 M1
  • A2 M1
  • A2 M3
  • A3 M2
  • A3 M4
  • A3 M5

...

我想将first.file与second.file匹配我的结果文件应该是这样的:

result.file

  • A1 M1
  • A2 M1
  • A2 M3
  • A3 M2

如何使用awk代码执行此操作?

提前谢谢

2 个答案:

答案 0 :(得分:4)

awk '
  BEGIN { while (getline < "first.file") { file1[$0]=1 } }
  $2 in file1 { print }
' <second.file

答案 1 :(得分:2)

使用以下内容:

grep -f firstfile secondfile

grep就足够了。 即使我们也可以使用awk执行此操作,但我更喜欢grep

如果你仍然坚持使用awk,那么我在awk中也有一个非常简单的解决方案。

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

<强>解释

将file2条目放入数组中。然后迭代file1,每次在数组中找到这些条目。