我希望对点的大型数据文件执行完全自交叉连接。但是,我无法使用编程语言来执行操作,因为我无法将其存储在内存中。我想找到集合中所有点的组合。下面是我的数据集的示例。
x y
1 9
2 8
3 7
4 6
5 5
我想交叉连接此数据以生成包含所有点组合的 25 行表。会有低内存解决方案吗?也许用 awk
?
谢谢,
尼古拉斯海登
附言我是一名新手程序员。
最佳答案
也许分两步,创建一个头文件、column1 和 column2 文件并加入 column1 和 column2 并附加到头文件
awk 'NR==1{print > "cross"} NR>1 {print $1 > "col1"; print $2 > "col2"}' file
join -j9 col1 col2 -o1.1,2.1 >> cross
rm col1, col2
显然要确保临时文件名和最终文件名不会与现有文件名冲突。
请注意,MacOS 上的 join
命令没有 -j
选项,因此请将其更改为等效的长格式
join -19 -29 col1 col2 -o1.1,2.1 >> cross
在这两种选择中,我们要求 join 使用不存在的第 9 个字段作为键,该键将第一个文件的每一行与第二个文件的每一行相匹配,以生成两个文件的叉积。
关于mysql - 如何进行低 RAM 完全交叉连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43422037/