希望在两个不同的文本文件上执行内部联接.基本上我正在寻找GNU连接程序的内连接等价物.这样的事情存在吗?如果没有,awk或者sed解决方案最有帮助,但我的第一选择是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
Run Code Online (Sandbox Code Playgroud)
档案2:
Alien Registration Card LUA
Run Code Online (Sandbox Code Playgroud)
结果:
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
Run Code Online (Sandbox Code Playgroud)
file2 LUA最后是否应该包含?
如果是,您仍然可以使用join:
join -t'|' -12 <(sort -t'|' -k2 file1) file2
Run Code Online (Sandbox Code Playgroud)
这是一个awk选项,因此您可以避免bash依赖(为了可移植性):
$ awk -F'|' 'NR==FNR{check[$0];next} $2 in check' file2 file1
Run Code Online (Sandbox Code Playgroud)
这是如何运作的?
-F'|' - 设置字段分隔符'NR==FNR{check[$0];next} - 如果总记录数与文件记录号匹配(即我们正在读取提供的第一个文件),那么我们填充一个数组并继续.$2 in check - 如果我们创建的数组中提到了第二个字段,则打印该行(如果未提供任何操作,则为默认操作).file2 file1 - 文件.由于NR==FNR构造,顺序很重要.| 归档时间: |
|
| 查看次数: |
9417 次 |
| 最近记录: |