linux下shuf命令随即排序shuf -n1 a.txt

Posted alextongtong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下shuf命令随即排序shuf -n1 a.txt相关的知识,希望对你有一定的参考价值。

      有时候我们需要将文本的顺序打乱,也就是随机排序,我以前的做法是写个shell,利用 bash 里的内置变量 $RANDOM 进行排序,然后打印。代码如下:
[java]  view plain  copy
  1. while read line;do echo $RANDOM $line; done < file | sort -n | sed 's/[^ ]\\+ //'   

    这里取了个巧而已。虽然也能实现需求,但是如果遇到大文件,本身 shell 的效率是很低的。偶然得知系统本身有一个命令是专职干这事儿的,那就是 shuf 命令,那效率,是杠杠滴啊。简单介绍下:

    1. 这个命令属于 coreutils 包,如果系统没有此命令,请 yum install coreutils 进行安装。
    2. 它也能够接受标准输入,即管道
    参数:
          -n 最多显示多少行
          -o 将随机排序后的输出写到一个文件中
    更多信息请参考man页。


另外,今天发现用 sort -R也可以随机排序,只是效率比shuf稍微慢一点儿!man sort 的解释如下:

[plain]  view plain  copy
  1. -R, --random-sort  
  2.        sort by random hash of keys  


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 包。

以上是关于linux下shuf命令随即排序shuf -n1 a.txt的主要内容,如果未能解决你的问题,请参考以下文章

在Unix命令行中从文件中读取随机行的简单方法是什么?

2106 Problem F Shuf?ing Along

怎样用Bash/shell打乱一个字符串?

随机线使用sed

自学Linux命令的四种方法

自学Linux命令的四种方法