Shell

一行 shell 輸出一個單詞中的所有字母組合

  • June 18, 2020

我有這樣一句話:

fath

輸出單詞中的所有字母組合,例如:

f
fa
fat
fath
ft
fth
fh

編輯:

這是一個單行awk解決方案:

echo f a t h | awk '{for(i=0;i<2^NF;i++) { for(j=0;j<NF;j++) {if(and(i,(2^j))) printf "%s",$(j+1)} print ""}}'

輸出


f
a
fa
t
ft
at
fat
h
fh
ah
fah
th
fth
ath
fath

(此電源集實現的修改版本https://stackoverflow.com/questions/40966428/awk-power-set-implementation

重擊:

combos () {
   local word=$1
   local len=${#word}
   local first=${word:0:1}
   echo "$first"
   for ((i=1; i < len; i++ )); do
       for ((j=1; i+j <= len; j++ )); do
           echo "$first${word:i:j}"
       done
   done
}

然後

$ combos fath
f
fa
fat
fath
ft
fth
fh

引用自:https://unix.stackexchange.com/questions/593025