Unix - 根据列值随机选择行

时间:2013-02-25 10:49:00

标签: bash unix random

我有一个大约1000行的文件,如下所示:

ABC C5A 1
CFD D5G 4
E1E FDF 3
CFF VBV 1
FGH F4R 2
K8K F9F 3
... etc

我想选择100个随机行,但每个第三列值为10(所以第3列中所有行的值为“1”的随机10行,列中值为“2”的所有行的随机10行3,等等。

这是否可以使用bash?

2 个答案:

答案 0 :(得分:7)

首先grep所有具有一定数量的文件,将其随机播放并使用shuf -n 10选择前10个。

for i in {1..10}; do
    grep " ${i}$" file | shuf -n 10
done > randomFile

如果您没有shuf,请使用sort -R对其进行随机排序:

for i in {1..10}; do
    grep " ${i}$" file | sort -R | head -10
done > randomFile

答案 1 :(得分:3)

如果您可以使用awk,则可以使用单行

进行相同操作
sort -R file | awk '{if (count[$3] < 10) {count[$3]++; print $0}}'
相关问题