如何产生笛卡尔积在bash? [英] How to produce cartesian product in bash?

查看:132
本文介绍了如何产生笛卡尔积在bash?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想产生这样的文件(的笛卡尔积 [1-3]×[1-5]

I want to produce such file (cartesian product of [1-3]X[1-5] ) :

1 1
1 2
1 3
1 4
1 5
2 1
2 2
2 3
2 4
2 5
3 1
3 2
3 3
3 4
3 5

我可以做到这一点使用嵌套的循环,如:

I can do this using nested loop like:

for i in $(seq 3) 
do
  for j in $(seq 5)
  do
      echo $i $j
  done
done

有没有使用循环任何解决方案?

is there any solution without using loops?

推荐答案

您可以使用此:

$ printf "%s\n" {1..3}" "{1..5}
1 1
1 2
1 3
1 4
1 5
2 1
2 2
2 3
2 4
2 5
3 1
3 2
3 3
3 4
3 5

它使用了括号展开:

Which uses the brace expansion:

$ echo {1..5}
1 2 3 4 5

和它的组合:

$ echo {1..5}+{a,b,c}
1+a 1+b 1+c 2+a 2+b 2+c 3+a 3+b 3+c 4+a 4+b 4+c 5+a 5+b 5+c

这篇关于如何产生笛卡尔积在bash?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆