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

Red Hat Linux の標準ツールを使用して、ファイル内の行をランダム化するにはどうすればよいですか?

ええと、忘れないでください

sort --random-sort

shuf

sort -R 痛いほど遅いです。 5GBのファイルをソートしようとしました。 2.5時間であきらめました。次に shuf すぐにソートしました。


そして、Perl のワンライナーを手に入れましょう!

perl -MList::Util -e 'print List::Util::shuffle <>'

モジュールを使用しますが、モジュールは Perl コード配布の一部です。それが十分でない場合は、自分で作成することを検討してください。

-i でこれを使ってみました ファイルを編集するためのフラグ (「その場で編集」)。ドキュメントはそれが機能するはずだと示唆していますが、そうではありません。シャッフルされたファイルは引き続き標準出力に表示されますが、今回は元のファイルが削除されます。使用しないことをお勧めします。

シェル スクリプトを考えてみましょう:

#!/bin/sh

if [[ $# -eq 0 ]]
then
  echo "Usage: $0 [file ...]"
  exit 1
fi

for i in "[email protected]"
do
  perl -MList::Util -e 'print List::Util::shuffle <>' $i > $i.new
  if [[ `wc -c $i` -eq `wc -c $i.new` ]]
  then
    mv $i.new $i
  else
    echo "Error for file $i!"
  fi
done

テストされていませんが、機能することを願っています。


Linux
  1. コマンドラインを使用してLinuxでtar.gzファイルを抽出する方法

  2. 標準ツールを使用してディスク全体のパーティションレイアウトをコピーするにはどうすればよいですか?

  3. シェルコマンドを使用してASCIIファイルの最初のN行を削除するにはどうすればよいですか?

  1. Linuxを使用して、ファイルの内容をパラメーターとして実行可能ファイルに渡すにはどうすればよいですか?

  2. Linuxのviでfindによって返されたすべてのファイルを編集するにはどうすればよいですか?

  3. Linux + 特定のユーザーだけにファイルの読み取りを許可する方法

  1. Linuxでリポジトリをミラーリングする方法

  2. Linux でシェル アプリケーションの出力を非表示にするにはどうすればよいですか?

  3. Red Hat Linux の sshd ログ ファイルはどこに保存されますか?