[英]How do I randomly merge two input files to one output file using unix tools?
我有兩個大小不同的文本文件,我想合並成一個文件,但內容隨機混合; 這是為某些單元測試創建一些現實的數據。 一個文本文件包含真實的情況,而另一個則包含錯誤的情況。
我想使用標准的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" "
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.