当前位置: 首页 > 面试题库 >

GNU / Linux中两个文件(作为行集)的笛卡尔积

麻昌翰
2023-03-14
问题内容

与笛卡尔积一样,如何使用外壳一线和通用GNU工具将两个文件中的行连接起来?什么是最简洁,美观和“ linuxy”的方式?

例如,如果我有两个文件:

$ cat file1
a
b
$ cat file2
c
d
e

结果应该是

a, c
a, d
a, e
b, c
b, d
b, e

问题答案:

这是shell脚本

while read a; do while read b; do echo "$a, $b"; done < file2; done < file1

虽然那会很慢。我想不出任何预编译的逻辑来完成此任务。速度的下一步将是在awk / perl中执行上述操作。

awk 'NR==FNR { a[$0]; next } { for (i in a) print i",", $0 }' file1 file2

嗯,这个使用预编译逻辑的hacky解决方案怎么样?

paste -d, <(sed -n "$(yes 'p;' | head -n $(wc -l < file2))" file1) \
          <(cat $(yes 'file2' | head -n $(wc -l < file1)))


 类似资料:
  • 问题内容: 定义:两个集合的笛卡尔积是这些集合的所有可能对的集合,因此{A,B} x {a,b} = {(A,a),(A,b),(B,a ),(B,b)}。 现在,我想将这样的笛卡尔积插入数据库表(每对成一行)。打算在表中使用每对的默认值,因此此时数据库中不存在数据(即两组)。 任何想法如何使用postgresql实现这一目标? 编辑 : 借助Grzegorz Szpetkowski的答案,我能够

  • 问题内容: 你是否知道一些精巧的Java库,可让你制作两个(或更多)集合的笛卡尔积? 例如:我有三套。一个对象是Person类的对象,第二个对象是Gift的对象,第三个对象是GiftExtension的对象。 我想生成一个包含所有可能的三元组的集合。 集的数量可能会有所不同,因此我无法在嵌套的foreach循环中执行此操作。在某些情况下,我的应用程序需要制作Person-Gift对的乘积,有时是的

  • 问题内容: 在Tensorflow中有什么简单的方法可以像itertools.product一样做笛卡尔积吗?我想获得两个张量(和)的元素组合,在Python中可以通过itertools作为。我正在Tensorflow中寻找替代方案。 问题答案: 我将在此假定和均为一维张量。 为了得到两者的笛卡尔积,我会用的组合和: 您使用LEN(一) LEN(B) 2张量,其中的元件的每个组合结束并且在最后一维

  • 问题内容: 我想在两个SELECT语句之间执行笛卡尔积 我希望结果是(1,2)与(3,4)的每种组合,例如: 问题答案: 您可以使用CROSS JOIN子句 其中MyTable1有两行,分别包含1和2;MyTable2有两行,分别包含3和4。

  • 问题内容: 您将如何在JavaScript中实现多个数组的笛卡尔积? 举个例子, 应该回来 问题答案: 这是使用和提供的解决问题的功能解决方案(没有任何 可变变量 !),该提供者为:

  • 问题内容: 我试图找到两个不同集合的笛卡尔积。我在网上找不到有关列表或字典的笛卡尔积的任何信息。 功率设置也很混乱。 我使用的书中都没有这两个。 你们中的一位可以指出我正确的方向。 问题答案: 对于笛卡尔积,请检出。 对于幂,该文档也给我们的食谱: 例如: