サイズの異なる 2 つのテキスト ファイルがあり、それらを 1 つのファイルにマージしたいのですが、コンテンツがランダムに混在しています。これは、一部の単体テスト用に現実的なデータを作成するためです。1 つのテキスト ファイルには true ケースが含まれ、もう 1 つのテキスト ファイルには false が含まれています。
標準の Unix ツールを使用してマージされた出力を作成したいと考えています。これどうやってするの?
を使用したランダムソート-R
:
$ sort -R file1 file2 -o file3
私のバージョンのsort
もサポートしていません-R
。awk
したがって、各行の前に乱数を挿入し、それらの番号に従って並べ替えてから、番号を削除するという代替手段があります。
awk '{print int(rand()*1000), $0}' file1 file2 | sort -n | awk '{$1="";print $0}'
これにより、各行の先頭に乱数が追加さawk
れ、その数に基づいて並べ替えられてから削除されます。これは、(choroba が指摘したように) 重複があり、クロスプラットフォームである場合でも機能します。
awk 'BEGIN { srand() } { print rand(), $0 }' file1 file2 |
sort -n |
cut -f2- -d" "