如何使用unix工具将两个输入文件随机合并到一个输出文件?

时间:2013-01-25 20:55:44

标签: linux unix

我有两个不同大小的文本文件,我想将它们合并到一个文件中,但内容随机混合;这是为某些单元测试创​​建一些实际数据。一个文本文件包含真实案例,而另一个文件文件包含false。

我想使用标准的Unix工具来创建合并输出。我怎么能这样做?

3 个答案:

答案 0 :(得分:4)

使用-R进行随机排序:

$ sort -R file1 file2 -o file3

答案 1 :(得分:2)

我的sort版本也不支持-R。所以这里有一个替代方法,使用awk,在每行前面插入一个随机数,然后根据这些数字进行排序,然后去除数字。

awk '{print int(rand()*1000), $0}' file1 file2 | sort -n | awk '{$1="";print $0}'

答案 2 :(得分:0)

这会在awk的每一行的开头添加一个随机数,根据该数字排序,然后将其删除。如果您有重复(如choroba指出)并且稍微跨平台,这甚至可以工作。

awk 'BEGIN { srand() } { print rand(), $0 }' file1 file2 |
    sort -n |
    cut -f2- -d" "