乱数を使ってランダムに並べ直す


データの順番をランダムに変えたいということがありませんか? そんなときはいつも,エXXXなどの表計算ソフトを起動して,乱数を付加して並べ替えをして・・・というようなことをしていました.ところが表計算ソフトが手元にないことがあり,困ったのでスクリプトを書いてみました.作業ファイル temp.xxx は自動的に削除したかったのですが,私の力ではできませんでした.
# random sort
BEGIN	{
	FS=","
	OFS=","
	split(ARGV[1], f, ".")
	outfile = f[1]".rs1"
	srand()
}
	{
	print rand()","$0  | "sort > temp.xxx"
	printf("%d\r",NR)
}
END	{
	print ""
	close("sort > temp.xxx")
	i++
	while (getline < "temp.xxx" > 0) {
		$1 = ""
		sub("^\,", "", $0)	# 行番号を削除する
		print $0 > outfile
		printf("%d\r",NR)
	}
	print ""
	print "" > "temp.xxx"
}

パラグラフ型のデータを乱数を使ってランダムに並べ直す


JGAWKホームページに戻る