对笛卡尔积使用连接
Using join for cartesian product
在 an answer 的评论中开始了有关使用 GNU coreutils join
创建两个文件的笛卡尔积的讨论。一位网友建议:
$ join -j 2 -t '' file1 file2
产生 file1
和 file2
的笛卡尔积:
$ 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
在 an answer 的评论中开始了有关使用 GNU coreutils join
创建两个文件的笛卡尔积的讨论。一位网友建议:
$ join -j 2 -t '' file1 file2
产生 file1
和 file2
的笛卡尔积:
$ 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