3

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

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

4

3 回答 3

6

使用随机排序-R

$ sort -R file1 file2 -o file3
于 2013-01-25T20:58:15.453 回答
3

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

awk '{print int(rand()*1000), $0}' file1 file2 | sort -n | awk '{$1="";print $0}'
于 2013-01-25T21:25:34.510 回答
0

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

awk 'BEGIN { srand() } { print rand(), $0 }' file1 file2 |
    sort -n |
    cut -f2- -d" "
于 2013-01-25T21:24:44.713 回答