一句话读完版:
假设从 data.txt 中随机抽取 100 行,使用如下命令
shuf data.txt | head -100
正文
在进行机器学习或者深度学习工作的时候,我们有时希望从一个大数据文件中随机抽取一些记录来进行一些快速的预研,无须编程,仅仅用一条 Linux 命令行就可以实现我们的目的。
首先来看一个例子,假设我们有数据文件 test.txt ,其内容如下
111
111
111
222
333
444
555
666
777
888
888
999
假设我们要从 test.txt 中随机抽取 3 行,可以使用shuf test.txt | head -3
来实现,参见下面的命令运行及输出
$ shuf test.txt | head -3
444
555
333
这是因为 shuf 命令可以将文件按行随机打乱之后输出。
我们也可以使用 sort --random-sort 来进行类似的操作,不过和 shuf 不同,sort --random-sort 会将相同的行排列在一起输出,参见下面的输出
使用 shuf
$ shuf test.txt
111
999
777
111
333
888
222
666
888
444
111
555
使用 sort --random-sort
$ sort --random-sort test.txt
444
333
222
111
111
111
666
888
888
777
555
999
能看到 shut 和 sort --random-sort 对于相同行的处理是不同的。