假设我有值A B C D E
和八个地方1 2 3 4 5 6 7 8
。如何通过两次和三次重复打印所有可能的组合?
例子:
1 2 3 4 5 6 7 8
_______________
A A B B C C D E
A B B C C D D E (and so on...)
A A A B B C D E
A B B B C C D E (and so on...)
哪个组合跟哪个组合并不重要。不应该有任何缺失值,例如AABBCCDD
(哪里E
缺失了)
答案1
zsh
使用//ksh93
的粗略方法bash
可能是:
printf '%s\n' {A..E}{A..E}{A..E}{A..E}{A..E}{A..E}{A..E}{A..E} |
sed '/A/!d; /B/!d; /C/!d; /D/!d; /E/!d; /\(.\)\(.*\1\)\{3\}/d'
其中我们使用 zsh-style{A..E}
生成从到 的所有 5 8 个组合,并删除不包含、或不包含、、或超过 3 个相同字符的组合。AAAAAAAA
EEEEEEEE
sed
A
B
C
D
E
将;s/./ &/2g
(GNU sed
) 或;s/./ &/g;s/ //
(any sed
) 添加到sed
代码中以在字母之间插入空格。