入力へのランダム出力

入力へのランダム出力

関連質問:ユーザー入力に基づいてランダム出力を生成する方法

のようなユーザー(単一のパラメータ)から入力を受けたいと思いますHello。そして、次のような出力を提供したいと思います。

olleho
llohe
he
llo
lo

上記と同じです。また、単一の入力から何百万ものサンプルを生成したいと思います。このテキストをtxt形式のファイルとして保存したいと思います。どうすればいいですか?


私のEメールアドレスをパラメータとして提供するとしましょう。[Eメール保護]`。それで、このアカウントに関連するパスワードを持つことができるようにしたいと思います。いくつかのサンプル出力は次のとおりです。
[email protected]
Istiakshovon
Istiak
Ishovon
Ishovon0
Iksgc
gmail
moc

可能なすべての方法でサンプルパスワードを作成したいと思います。


追加しましたタグの理由から、多くの人が「awk」を使用してテキスト形式を指定することがわかりました。私はそれに慣れていません(私はLinux初心者だけです)。だから追加しました。

ベストアンサー1

ユーザーの入力が変数にあると仮定すると、userinput次のawkコードはその入力の無限のランダムなサンプルを生成します。

userinput=$userinput awk '
    BEGIN {
        s = ENVIRON["userinput"] "\n"
        n = length(s)
        while (1)
            printf "%s", substr(s,int(1+rand()*n),1)
    }'

これは値を取り、$userinput文字列の末尾に改行文字を追加し、コードが壊れるまでその文字列からランダムな文字を書き始めます。追加された改行文字によって、出力に改行文字が表示されることがあります。

コマンドを使用すると、head出力行数を制限できます。 1000行が必要な場合は、出力をパイプしますhead -n 1000。次のコマンドを使用して、出力の最初の10行をテストしますuserinput='Hello World!'

$ userinput='Hello World!'
$ userinput=$userinput awk '
    BEGIN {
        s = ENVIRON["userinput"] "\n"
        n = length(s)
        while (1)
            printf "%s", substr(s,int(1+rand()*n),1)
    }' | head
ld l!lodd loWHe! o
H lolooel
o
eo !lll
WrlHellHod
rlll
o!Hddrd

l!lHelWloodWddeodldHHlo!d l ll oorordeoellrWHledW!!WrW W!l
l!od

空白行を削除するには、出力をに渡しますsed '/./!d'

入力の最初の行から入力文字列を取得するこのコマンドのバリアントです。

awk '{
        s = $0 "\n"
        n = length(s)
        while (1)
            printf "%s", substr(s,int(1+rand()*n),1)
    }'

おすすめ記事