在Unix命令行中从文件中读取随机行的简单方法是什么?
我有一个10 ^ 7行文件,其中我想从文件中随机选择1/100行.这是我所拥有的AWK代码,但它会预先包含所有文件内容.我的PC内存无法处理这样的问题.还有其他办法吗?
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
Run Code Online (Sandbox Code Playgroud) 我有一个内容文件
abc
def
high
lmn
...
...
Run Code Online (Sandbox Code Playgroud)
文件中有超过200万行.我想从文件中随机采样行并输出50K行.有关如何解决这个问题的任何想法?我正在考虑Perl及其rand功能(或者一个方便的shell命令将是整洁的).
相关(可能重复)问题: