我有一个包含1000万行的文件,我想从中随机选择1/100行。这是我编写的AWK代码,但它会先将整个文件内容读入内存中。我的电脑内存无法处理这么大的文件。有其他方法可以实现吗?
awk 'BEGIN{srand()}
!/^$/{ a[c++]=$0}
END {
for ( i=1;i<=c ;i++ ) {
num=int(rand() * c)
if ( a[num] ) {
print a[num]
delete a[num]
d++
}
if ( d == c/100 ) break
}
}' file