特定の長さのすべての文字列を順次名前付きシェル変数として読み取る方法は?

特定の長さのすべての文字列を順次名前付きシェル変数として読み取る方法は?

テキストファイル内の特定の長さのすべての文字列を見つけ、各文字列を新しい変数として保存できるコードがあるかどうか疑問に思います。

たとえば、テキストファイルには5つの文字列があります。そのうちの2つは3文字の長さです。アイデアは、8文字の長さの文字列をすべて解析し、順番に変数に入れることです(たとえばvar1、、、、var2var3

どうすればいいですか?

ありがとうございます!

(疑問に思う人のために、秘密鍵を含むビットコインウォレットが複数含まれている古いファイルを自分のコンピュータで見つけ、残高を確認するためにすべて変数として保存しようとしました。)ビット
コインアドレスに関するこの記事を確認してください。どの文字が含まれているかを確認するには、BitcoinアドレスのWebサイトにアクセスしてください。ここ

答え1

以下は、使用しているすべての固有の8文字の単語のアルファベット順のリストの例ですman bash

bash   # clean temporary environment 
. <(man bash | tr -sc '[[:alpha:]]' '\n' |
    egrep  '^[a-z]{8}$' | sort -u | 
    nl -s '=' | sed 's/^ */var/')
echo $var20 $var80 $var200

出力:

asterisk document precedes

清掃するには:

exit   # forget all those vars

メモ:

  • 入力データに対するある程度絶対的な確実性鈍い、シェルが誤ってコマンドとして解釈できる危険な内容は含まれていません。その場合、完了割り当てを安全に使用することはできず、=より合理的なものを使用する必要がありますprintf -v var1 foobar

  • このman bash例は、質問で要求されるよりも複雑です。最も重要なのは、ストリームに番号とプレフィックスをnl追加して実行して、文字列を変数に割り当てることです。=sedvar.

関連情報