4

我有一个大约 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 行,从第 3 列中值为“2”的所有行中随机选择 10 行,等等)。

这可以使用bash吗?

4

2 回答 2

7

首先grep所有具有特定编号的文件,将它们随机播放并使用 . 选择前 10 个文件shuf -n 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
于 2013-02-25T10:56:26.917 回答
3

如果你可以使用awk,你可以用单线做同样的事情

sort -R file | awk '{if (count[$3] < 10) {count[$3]++; print $0}}'
于 2013-02-25T11:08:05.253 回答