有时候我们需要将文本的顺序打乱,也就是随机排序,我以前的做法是写个shell,利用 bash 里的内置变量 $RANDOM 进行排序,然后打印。代码如下:
2. 它也能够接受标准输入,即管道
参数:
-n 最多显示多少行
-o 将随机排序后的输出写到一个文件中
更多信息请参考man页。
这里取了个巧而已。虽然也能实现需求,但是如果遇到大文件,本身 shell 的效率是很低的。偶然得知系统本身有一个命令是专职干这事儿的,那就是 shuf 命令,那效率,是杠杠滴啊。简单介绍下:
1. 这个命令属于 coreutils 包,如果系统没有此命令,请 yum install coreutils 进行安装。2. 它也能够接受标准输入,即管道
参数:
-n 最多显示多少行
-o 将随机排序后的输出写到一个文件中
更多信息请参考man页。
另外,今天发现用 sort -R也可以随机排序,只是效率比shuf稍微慢一点儿!man sort 的解释如下:
2013.11.13 更新
1. 在centos 5.5下,sort版本为sort (GNU coreutils) 5.97,没有-R选项
2. 在centos 6.4下,sort版本为sort (GNU coreutils) 8.4,有-R选项。
3. shuf 和 sort命令同属于coreutils 包。