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

Linux 如何使用unix工具将两个输入文件随机合并到一个输出文件?,linux,unix,Linux,Unix,我有两个不同大小的文本文件,我想合并成一个文件,但内容随机混合;这是为了为一些单元测试创建一些真实的数据。一个文本文件包含正确的案例,而另一个文本文件包含错误的案例 我想使用标准的Unix工具来创建合并的输出。如何执行此操作?使用-R进行随机排序: $sort-R file1 file2-o file3 这将使用awk在每行的开头添加一个随机数,根据该数字进行排序,然后将其删除。如果您有重复项(正如choroba所指出的),并且稍微跨平台,这甚至可以工作 awk 'BEGIN { srand()

我有两个不同大小的文本文件,我想合并成一个文件,但内容随机混合;这是为了为一些单元测试创建一些真实的数据。一个文本文件包含正确的案例,而另一个文本文件包含错误的案例


我想使用标准的Unix工具来创建合并的输出。如何执行此操作?

使用
-R
进行随机排序:

$sort-R file1 file2-o file3

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

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

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

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

如果同一行多次出现,则结果可能是意外的。试试
sort-R@sudo\O我只是想让你知道
-R
选项在Mac版的
sort
中不存在。并且对于每行包含一个以上单词的所有文件都失败。