如何将此输出命令写入文件

时间:2019-12-16 10:37:24

标签: linux bash tail hexdump

我正在尝试从文件中获取所有带尾的新行并将其转换为hexdump,但是我无法将其写入文件,我尝试使用>>| tee -a destfile,但不会出现任何错误,但会停止工作。

所以,我有一个二进制文件(data.bin),该文件总是通过脚本来增加新行。我正在尝试将其读取并转换为十六进制,并且效果很好,并且输出效果很好:

tail -f data.bin | hexdump -e '16/1 "%02x " "\n"'

这将输出以下内容:

01 55 1d fa 14 ae b5 41 ec 51 3c 42 64 55 00 00
74 5e f7 5d 00 00 00 00 02 55 1d fa 33 33 b3 41
7b 14 3f 42 63 55 00 00 74 5e f7 5d 00 00 00 00

当我尝试这样做

tail -f data.bin | hexdump -e '16/1 "%02x " "\n"' >> destfile.txt 

它将创建一个空文件,并且不写入任何内容。

1 个答案:

答案 0 :(得分:0)

重定向命令的输出时,输出流将被完全缓冲,因此直到刷新后才可见。您可以阅读示例this link,以了解更多信息。

要缓冲输出行,可以使用GNU coreutils中的stdbuf实用程序:

stdbuf -oL tail -f input | stdbuf -oL hexdump -e '16/1 "%02x " "\n"' >> destfile.txt 

这样,将在每一行刷新输出。

相关问题