我的博客

awk 随机抽样文件

目录
  1. 随机编号再排序
  2. 随机抽取

随机编号再排序

1
awk 'BEGIN{srand()} {print rand()"\t"$0}' input_file | sort -nk 1 | head -n line_num | awk -F "\t" '{print $2}'

随机抽取

1
2
3
4
#!/bin/bash
IN_FILE=$1
LINE_NUM=$2
awk -vN=${LINE_NUM} -vC="`wc -l ${IN_FILE}`" 'BEGIN{srand();while(n<N){i=int(rand()*C+1);if(!(i in a)){a[i]++;n++}}}NR in a' ${IN_FILE}

评论无需登录,可以匿名,欢迎评论!