ふと、先日のシェル芸勉強会のQ7みたいな「連続したn文字の組み合わせ」を羅列させたいなと思ったので、ちょっと調べてみた。 とりあえず、以下のように記述することでn文字の組合せを出力できる。 ちなみにsedのブレース展開で件数を処理しているため、開始が2からになっている。
sed -e'p;1s/^.//g;'#{2..n}|(X=$(cat);echo "$X"|grep -Eo .{$(wc -l<<<"$X")})|sort
blacknon@BS-PUB-UBUNTU-01:~$ # 3文字の組み合わせ
blacknon@BS-PUB-UBUNTU-01:~$ echo {A..Z}|sed 's/ //g'|sed -e'p;1s/^.//g;'#{2..3}|(X=$(cat);echo "$X"|grep -Eo .{$(wc -l<<<"$X")})|sort
ABC
BCD
CDE
DEF
EFG
FGH
GHI
HIJ
IJK
JKL
KLM
LMN
MNO
NOP
OPQ
PQR
QRS
RST
STU
TUV
UVW
VWX
WXY
XYZ
blacknon@BS-PUB-UBUNTU-01:~$ # 5文字の組み合わせ
blacknon@BS-PUB-UBUNTU-01:~$ echo {A..Z}|sed 's/ //g'|sed -e'p;1s/^.//g;'#{2..5}|(X=$(cat);echo "$X"|grep -Eo .{$(wc -l<<<"$X")})|sort
ABCDE
BCDEF
CDEFG
DEFGH
EFGHI
FGHIJ
GHIJK
HIJKL
IJKLM
JKLMN
KLMNO
LMNOP
MNOPQ
NOPQR
OPQRS
PQRST
QRSTU
RSTUV
STUVW
TUVWX
UVWXY
VWXYZ