首页 > 解决方案 > 加入命令未显示预期结果

问题描述

逗号分隔的版本中有两个文本文件。第一个文件包含“学号,名字”,第二个文件包含“名字,年级”。我需要对一个公共字段进行排序并将它们连接在一起,以便我可以在一个输出中看到两个文件中除公共字段之外的所有剩余字段。

输入文件 1:

1001,詹姆斯

第1020章

1030,彼得

第1040章

输入文件 2:

詹姆斯,80

彼得,65

丽莎,90

在这种情况下,公共字段是“名字”,输出应生成“他们的学号,年级”格式。

期望的输出

1001,80

1040,90

1030,65

1020,0

sort -b -t $',' -k 2b,2 $1 > file1_sorted.txt
sort -b -t $',' -k 1b,1 $2 > file2_sorted.txt
join -1 2 -2 1 -t $',' -o 1.1,2.2 -a 1 file1_sorted.txt file2_sorted.txt

这就是我的代码的样子,但它没有给我任何结果和错误消息。你能帮我弄清楚是什么导致了这里的问题吗?

非常感谢!!

标签: bashshell

解决方案


使用 bash 和 GNU 排序:

join -1 2 -2 1 -t, -o 1.1,2.2 -a 1 -e 0 <(sort -t, -k2 file1) <(sort -t, file2)

输出:

1001,80
1040,90
1030,65
1020,0

推荐阅读