Linuxオペレーティングシステムは、このサイトで出会った数多くのLinuxコマンドラインのヒントや記事を通じて、すべてのコンピューティング業界のジャックであることがすでに確立されているためです。
このオペレーティングシステムの評判をさらに高める時が来ました。 Linuxファイル管理の一環として、Linuxオペレーティングシステム環境にあるファイルの行をシャッフルする方法を検討します。
Linuxオペレーティングシステム環境でファイル内の行をシャッフルするには、2つの方法があります。アプローチ1では、ターゲットファイルの行をシャッフル/再配置して、特定の必要な順序で表示することを検討している場合があります。このような場合、ソートコマンドが呼び出されます。
アプローチ2では、ターゲットファイルの最後の行が表示される順序を気にする必要はありません。このような場合、shufコマンド 呼び出されます。
この記事では、Linuxでファイル内の行をランダムにシャッフルするさまざまなLinuxテクニックについて説明します。
問題の説明
数行のサンプルテキストファイルを作成する必要があります。これは、説明するさまざまなLinuxシャッフルコマンドを実装および実行するときに参照します。
$ sudo nano sample_file.txt

このファイル全体の番号付きビューにcatコマンドを使用できます:
$ cat -n sample_file.txt

catコマンド 出力は、合計 15のテキストファイルを処理していることを示しています。 行。また、お気づきかもしれませんが、 12行 〜 14 繰り返しです。これらの3行の出現は、さまざまなシャッフルコマンドがどのように機能するかを理解するのに役立ちます。
LinuxでShufコマンドを使用して回線をシャッフルする
GNU Coreutils以降 パッケージホストshuf コマンドの場合、Linuxオペレーティングシステムディストリビューションにデフォルトでインストールされているはずです。 shufの主な機能 コマンドは、与えられた入力に基づいてランダムな順列を生成することです。
shufの動作メカニズム コマンドは次のとおりです。最初に入力データをメモリにロードし、実行を続行する前に、空きメモリが入力データ/ファイルサイズよりも大きいかどうかを参照します。
構文は次のとおりです。
$ shuf [TARGET_INPUT_FILE]
この場合、その実装は次のようになります。
$ shuf sample_file.txt

ご覧のとおり、サンプルテキストファイルの行をランダムにシャッフルすることができました。 shufを実行する場合 コマンドを何度も繰り返すと、毎回異なる結果が得られます:
$ shuf random_file.txt

Linuxで並べ替えコマンドを使用して行をシャッフルする
並べ替え コマンドは主にファイルの行を特定の方法で再配置するために使用されます。並べ替えを組み合わせると、これらのファイル行をランダム化できます。 -R
を使用したコマンド オプション。
$ sort -R sample_file.txt

コマンドを何度も実行すると、毎回異なる結果が得られるはずです。
LinuxでAwkコマンドを使用してファイル行をシャッフルする
Linuxのmanページ( man awk )によると )、 awk 完璧なパターンスキャンおよびテキスト処理プログラミング言語です。ただし、シャッフル行での使用法を理解するには、以下に示すように、変数、ループ(whileループ)、ステートメント(ifステートメント)などのプログラミングの概念に触れる必要があります。
awk 'BEGIN{srand() } { lines[++d]=$0 } END{ while (1){ if (e==d) {break} RANDOM = int(1 + rand() * d) if ( RANDOM in lines ){ print lines[RANDOM] delete lines[RANDOM] ++e } } }' sample_file.txt

Linuxでファイル内の行をシャッフルすることに慣れました。