簡體   English   中英

如何使用Unix工具將兩個輸入文件隨機合並為一個輸出文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM