从列表ID匹配的另一个文件添加列到文件

gen*_*ion 3 unix awk cygwin paste

我有这样一个文件: -

123,Bob
456,Joe
789,Jane
Run Code Online (Sandbox Code Playgroud)

和这样的文件

456,abc,Red
789,def,Yellow
Run Code Online (Sandbox Code Playgroud)

我想将第3列从文件2添加到文件1,但仅限于第一列匹配的位置,最后得到如下内容: -

123,Bob
456,Joe,Red
789,Jane,Yellow
Run Code Online (Sandbox Code Playgroud)

我在Cygwin命令行上有任何可用的工具,例如awk,paste等.

Tho*_*hor 6

如果你有粘贴,你也应该有为这种事情设计的连接.假设输入文件按键排序,您可以说:

join -t, in1 in2
Run Code Online (Sandbox Code Playgroud)

输出:

456,Joe,Red
789,Jane,Yellow
Run Code Online (Sandbox Code Playgroud)

编辑以适应新要求

你可以使用-o开关:

join -t, -o 1.1,1.2,2.3 in1 in2
Run Code Online (Sandbox Code Playgroud)

您似乎想要保留第一个文件中的不成对行,在这种情况下使用-a1:

join -t, -o 1.1,1.2,2.3 -a1 in1 in2
Run Code Online (Sandbox Code Playgroud)

输出:

123,Bob,
456,Joe,Red
789,Jane,Yellow
Run Code Online (Sandbox Code Playgroud)

这会在未配对的行的末尾留下一个无关的逗号,但可以删除| sed 's/,$//'.