gpt4 book ai didi

linux - 内部连接两个文本文件

转载 作者:IT王子 更新时间:2023-10-29 00:16:48 26 4
gpt4 key购买 nike

希望对两个不同的文本文件执行内部联接。基本上我正在寻找与 GNU 连接程序等效的内部连接。这样的事情存在吗?如果没有,awksed 解决方案将是最有帮助的,但我的第一选择是 Linux 命令。

这是我想要做的一个例子

文件 1:

0|Alien Registration Card LUA|Checklist Update
1|Alien Registration Card LUA|Document App Plan
2|Alien Registration Card LUA|SA Application Nbr
3|Alien Registration Card LUA|tmp_preapp-DOB
0|App - CSCE Certificate LUA|Admit Type
1|App - CSCE Certificate LUA|Alias 1
2|App - CSCE Certificate LUA|Alias 2
3|App - CSCE Certificate LUA|Alias 3
4|App - CSCE Certificate LUA|Alias 4

文件 2:

Alien Registration Card LUA

结果:

0|Alien Registration Card LUA|Checklist Update
1|Alien Registration Card LUA|Document App Plan
2|Alien Registration Card LUA|SA Application Nbr
3|Alien Registration Card LUA|tmp_preapp-DOB

最佳答案

这是一个 awk 选项,因此您可以避免 bash 依赖(为了可移植性):

$ awk -F'|' 'NR==FNR{check[$0];next} $2 in check' file2 file1

这是如何运作的?

  • -F'|' -- 设置字段分隔符
  • 'NR==FNR{check[$0];next} -- 如果总记录数与文件记录数匹配(即我们正在读取提供的第一个文件),那么我们填充一个数组并继续。
  • $2 in check -- 如果我们创建的数组中提到了第二个字段,则打印该行(如果未提供任何操作,这是默认操作)。
  • file2 file1 -- 文件。由于 NR==FNR 构造,顺序很重要。

关于linux - 内部连接两个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com