我有一个大约 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吗?
首先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
如果你可以使用awk
,你可以用单线做同样的事情
sort -R file | awk '{if (count[$3] < 10) {count[$3]++; print $0}}'