如何在bash中生成笛卡尔积?

2024-02-21

我想生成这样的文件(笛卡尔积[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

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

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

有没有没有循环的解决方案?


结合两个大括号扩展 http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion!

$ 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

这是通过使用单大括号扩展来实现的:

$ 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在bash中生成笛卡尔积? 的相关文章

随机推荐