【发布时间】:2017-08-26 15:44:56
【问题描述】:
在an answer 的cmets 中开始了关于使用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 和 en_US.utf8 语言环境(所有系统安装和管理由不同的政党)。据报道,join 在 OS X 和带有join (GNU coreutils) 8.22 的系统中的行为符合预期。
以前有人遇到过这种情况吗?我做错了什么?
【问题讨论】:
-
试过了,得到了你想要的输出:
bash-3.00$ join -j 2 -t "" t1 t2 1a 1b 2a 2b也在 tcsh 和 csh 上试过,它也在那里工作。检查您的 unix 内核的某些部分是否搞砸了。 -
@user2141046 你还在使用 bash 3 吗?请更新您的系统和
join版本(join --version)? -
加入(GNU coreutils)8.12
标签: bash shell unix gnu-coreutils