Unix - 根据列值随机选择行

Abd*_*del 4 unix random bash

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

ABC C5A 1
CFD D5G 4
E1E FDF 3
CFF VBV 1
FGH F4R 2
K8K F9F 3
... etc
Run Code Online (Sandbox Code Playgroud)

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

这可能使用bash吗?

dog*_*ane 7

首先grep是具有一定数量的所有文件,将它们洗牌并选择前10个使用shuf -n 10.

for i in {1..10}; do
    grep " ${i}$" file | shuf -n 10
done > randomFile
Run Code Online (Sandbox Code Playgroud)

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

for i in {1..10}; do
    grep " ${i}$" file | sort -R | head -10
done > randomFile
Run Code Online (Sandbox Code Playgroud)