shell 随机从文件中抽取若干行的实现方法

2014-6-4 杜世伟 shell

方法一

        通过shuf命令:

  • shuf 命令的选项:
  • -e, --echo :将每个参数视为输入行
  • -i, --input-range=LO-HI :将LO 到HI 的每个数字视为输入行
  • -n, --head-count=行数 : 最多输出指定的行数
  • -o, --output=文件 :将结果输出到指定文件而非标准输出
  • --random-source=文件 :从指定文件获得随机比特
  • -z, --zero-terminated :以0 结束行而非新行
  • --help :显示此帮助信息并退出
  • --version :显示版本信息并退出

    shuf -n5。文件名

方法二:

         sort -R 文件名 | head -5

方法三:

        awk -vN=5 -vC="`wc -l file`" 'BEGIN{srand();while(n<N){i=int(rand()*C+1);if(!(i in a)){a[i]++;n++}}}NR in a'  文件名

方法四:

        while read line;do echo "$line $RANDOM";done < 文件名 | sort -k2,2n| awk 'NR<=5{print $1}'


标签: linux sort awk shuf

Powered by emlog 沪ICP备2023034538号-1