使用 awk 代码匹配两个文件

发布于 2024-12-06 02:34:11 字数 428 浏览 0 评论 0原文

有两个文件

first.file

  • M1
  • M2
  • M3

...

secondary.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 代码做到这一点?

先感谢您

There are two files

first.file

  • M1
  • M2
  • M3

...

second.file

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

....

I want to match first.file to second.file My result file should be like that:

result.file

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

How can I do that with awk codes ?

Thank you in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

唔猫 2024-12-13 02:34:11
awk '
  BEGIN { while (getline < "first.file") { file1[$0]=1 } }
  $2 in file1 { print }
' <second.file
awk '
  BEGIN { while (getline < "first.file") { file1[$0]=1 } }
  $2 in file1 { print }
' <second.file
篱下浅笙歌 2024-12-13 02:34:11

使用以下命令:

grep -f firstfile secondfile

grep 就足够了。
即使我们也可以使用 awk 来做到这一点,我更喜欢 grep

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

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

说明:

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

Use the below:

grep -f firstfile secondfile

grep is enough.
even though we can do this with awk too,i prefer grep

If you still insist on awk,Then i have a very simple solution in awk too.

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

Explanation:

Put file2 entries into an array. Then iterate file1, each time finding those entries in the array.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文