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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值