3

我有一个这样的文件:-

123,Bob
456,Joe
789,Jane

还有这样的文件

456,abc,Red
789,def,Yellow

我想将文件 2 中的第 3 列添加到文件 1,但仅在第一列匹配的地方添加,结果如下:-

123,Bob
456,Joe,Red
789,Jane,Yellow

我在 Cygwin 命令行中有任何可用的工具来执行此操作,例如 awk、paste 等。

4

1 回答 1

6

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

join -t, in1 in2

输出:

456,Joe,Red
789,Jane,Yellow

编辑以适应新要求

您可以使用-o开关:

join -t, -o 1.1,1.2,2.3 in1 in2

您似乎希望保留第一个文件中未配对的行,在这种情况下使用-a1

join -t, -o 1.1,1.2,2.3 -a1 in1 in2

输出:

123,Bob,
456,Joe,Red
789,Jane,Yellow

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

于 2012-12-20T10:29:23.870 回答