コンソール上で1行から連続したn文字の組み合わせを取得する

ふと、先日のシェル芸勉強会のQ7みたいな「連続したn文字の組み合わせ」を羅列させたいなと思ったので、ちょっと調べてみた。
とりあえず、以下のように記述することでn文字の組合せを出力できる。
ちなみにsedのブレース展開で件数を処理しているため、開始が2からになっている。

sed -e'p;1s/^.//g;'#{2..n}|(X=$(cat);echo "$X"|grep -Eo .{$(wc -l<<<"$X")})|sort
Sponsored Links

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

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*