コンマで区切って生成しようとしています。無秩序1から10の整数リストで次のことを試しましたが、結果は順序付きリストです。
seq -s "," 10 | shuf
答え1
paste -s
接続ワイヤを使用できます。
shuf -i1-10 | paste -sd, -
-i
shuf オプションを使用して正の整数範囲を指定します。
出力はseq
shufにパイプできます。
seq 10 | shuf | paste -sd, -
または-e
パラメータを混ぜます。
shuf -e {1..10} | paste -sd, -
答え2
1から10までの2つの数字のリストがあります。どちらが必要ですか?
これを説明する最良の方法は、たとえ話を使用することです。
1から10までの数字が書かれたボール10個をバッグに入れます。ラウンドごとにボールを1つずつ取り出して数字を読み、ボールをバッグに入れないでください。これにより、最大10個の数字のリストが生成されます。すべての数字がリストに表示されますが(強制)、一度だけ表示されます。
これらのリストは、次のようなコマンドで生成されます。
$ echo $(seq 10 | shuf) | tr " " "," 10,7,5,2,3,9,1,4,8,6 $ shuf -i1-10 | paste -sd, - 1,9,4,6,2,8,10,5,3,7
1から10までの数字が書かれたボール10個をバッグに入れます。ラウンドごとにバッグからボールを取り出して数字を読み、返品ボールがポケットに入れられました。リストは無限にでき、数字が繰り返されるまでに時間がかかる場合があります。
これらのリストは、次のようなコマンドを使用して生成できます。
$ shuf -n 20 -r -i1-10 | paste -sd, - 9,9,7,8,2,8,5,5,4,9,8,6,6,6,4,10,6,6,9,7
答え3
shuf
行の順序を混ぜて1行だけを提供すると、可能な結果はあまりありません。代わりに行を入力し、改行文字をコンマに変更してください。
$ seq 10 | shuf | tr '\n' ',' | sed '$s/,$/\n/'
1,7,8,2,9,4,6,3,5,10
(最後はsed
最後のカンマを改行文字に置き換えます。おそらくより良い方法がありますpaste
。@rowboatの返信)