我有两个不同大小的文本文件,我想将它们合并到一个文件中,但内容随机混合;这是为某些单元测试创建一些实际数据。一个文本文件包含真实案例,而另一个文件文件包含false。
我想使用标准的Unix工具来创建合并输出。我怎么能这样做?
答案 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" "