如何解决有没有一种方法可以将命令行输出的任意块分成每个块x个字节?
说我有一个Linux命令,例如:
shell_command > /dev/my_io
,并且说该shell_command是未缓冲的,并且期望转储大量数据,而my_io是处理该数据的文件描述符。我想做的是这样的:
shell_command | awk '{printf $0}' > /dev/my_io
,因为awk逐行通过,所以我在其中强制行缓冲。
例如,进一步说明。
shell_command => (4000 bytes)
shell_command (cat file.txt) | fancy_command > command_b
# command_b yields
chunk 1 (1000 bytes)
chunk 2 (1000 bytes)
chunk 3 (1000 bytes)
chunk 4 (1000 bytes)
还有,有没有办法强制将stdout的所有输出完全缓冲?
解决方法
我不是使用对my_io进行换行分隔的调用作为对大量数据进行分块的方法,而是想将这些数据分块为1000字节的块。有没有一种方法可以使用诸如awk这样的非常简单的命令来完成{printf}
有stdbuf
。
stdbuf -o1000 command | stdbuf -o1000 awk '{printf $0}' > /dev/my_io
几乎是一组通用的busybox命令
您可以使用dd
循环读取1000个字符,如下所示:
command | while a=$(dd bs=1 count=1000 status=none) && [[ -n "$a" ]]; do printf "$a"; done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。