对笛卡尔积使用连接

Using join for cartesian product

an answer 的评论中开始了有关使用 GNU coreutils join 创建两个文件的笛卡尔积的讨论。一位网友建议:

$ join -j 2 -t '' file1 file2

产生 file1file2 的笛卡尔积:

$ cat file1
1
2
$ cat file2
a
b

预期输出:

$ join -j 2 -t '' file1 file2
1a
1b
2a
2b

嗯,我得到:

$ join -t '' -j 2 file1 file2

1
a

1
b

2
a

2
b

我已经在 2 个 Debian Jessies (join (GNU coreutils) 8.23) 和 Ubuntu Trusty Tahr (join (GNU coreutils) 8.21) 中用 C 和 [ =34=.utf8 语言环境(所有系统由不同方安装和管理)。据报道,join 在 OS X 和具有 join (GNU coreutils) 8.22 的系统中的行为符合预期。

有没有人运行以前参与过这个?我做错了什么?

你需要使用'\0'作为分隔符

join -t '[=10=]' -j 2 file1 file2