我有一个大约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?
答案 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}}'