我使用管道将信息传输到文件myTool > file.txt 2>&1
,但该工具可能会生成千兆字节的数据 - 我需要在前 N 个字节之后切断,比如说 2MB。似乎pv
无法做到这一点,遗憾的是它不是按行进行的选项(head
)。
没有基本的工具可以做到这一点吗?
理想情况下,它会像这样工作myTool | limiter --amount 2M > file.txt 2>&1
:
答案1
有几个实现head
支持-c
此选项。 GNU 实现还接受M
兆字节后缀,最新版本还支持MB
兆字节 (1,000,000) 和MiB
兆字节 (1,048,576)。
head -c 2097152
head -c 2M
head -c 2MiB
head -c 2000000
head -c 2MB
使用pv
,您可以使用 指定大小,-s
并使用 告诉它在达到大小后立即停止读取-S
。同样,支持后缀,但这是 1024 的幂,而不是 1000。
pv -Ss 2M
pv -Ss 2097152
pv -Ss 2000000
(-q
如果不需要进度信息,请添加)
使用 GNU dd
,您可以执行以下操作:
dd iflag=fullblock,count_bytes bs=64k count=2097152 status=none
dd iflag=fullblock,count_bytes bs=64k count=2MiB status=none
dd iflag=fullblock,count_bytes bs=64k count=2M status=none
dd iflag=fullblock,count_bytes bs=64k count=2000000 status=none
dd iflag=fullblock,count_bytes bs=64k count=2MB status=none