GNU/Linux >> Linux の 問題 >  >> Linux

小文字/大文字の単語のすべての可能な組み合わせを取得しますか?

特定の単語の可能なすべての小文字と大文字の順列を出力するbashスクリプトを記述したいと思います。ハーレー:

harley
harleY
harlEy
harLey
...
HARLey
HARLEy
HARLEY

私の素朴な解決策は、この特定の単語に対してn番目(nはlen(word))のネストされたforループを記述することです:

#!/bin/bash
for a in {h,H}; do
    for b in {a,A}; do
    ...
    done
done

ただし、別の単語のスクリプトを再度コーディングする必要があります。

これを達成するためのより良い方法はありますか?

承認された回答:

少し良い解決策:

echo {h,H}{a,A}{r,R}{l,L}{e,E}{y,Y}

完全なスケーラビリティの場合:

echo harley \
| perl -nle 'print "echo ",
                    join "",map { "{" . lc . "," .uc ."}" } split //' \
| xargs -I {} bash -c "{}"

どうしても1行に1語必要な場合は、

を使用してください。
for w in {h,H}{a,A}{r,R}{l,L}{e,E}{y,Y};do echo $w;done

mattdmのコメントに感謝します

対応するスケーラブルバージョンは次のようになります:

echo harley \
| perl -nle 'print join "",map { "{" . lc . "," .uc ."}" } split //' \
| xargs -I {} bash -c 'for w in {};do echo $w;done'

楽しみのために、「ハーレー」を「supercalifragilisticexpialidocious」に置き換えてみてください。5分経ちましたが、私のコンピューターはまだこれを処理し続けており、おそらく終了することはありません🙂


Linux
  1. すべてのテキストを大文字から小文字に、またはその逆に変換しますか?

  2. Linux:システムからすべてのログインログを取得する方法は?

  3. 入力が「はい」の場合、スクリプトを再実行しますか?

  1. Ansiエスケープコードを使用してターミナルカーソルで文字を取得することは可能ですか?

  2. Linuxコマンドラインのすべてのファイルで単語のすべての出現箇所を置き換える方法

  3. 標準出力からの出力の最後の 4 文字を取得する

  1. ターミナルでマスクごとにすべてのファイルのリストを取得しますか?

  2. すべてのファイルを取得しますが、ファイルは配列内にあります– Bash?

  3. すべてのディスクの簡単なリストを取得する