如何只用 Linux 命令行来随机抽取文本数据文件的 N 行?

一句话读完版:
假设从 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 对于相同行的处理是不同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值