我有两个不同大小的文本文件,我想将它们合并到一个文件中,但内容是随机混合的;这是为一些单元测试创建一些真实的数据。一个文本文件包含真实案例,而另一个包含虚假案例。
我想使用标准的 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" "