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

How to I write this output command to a file

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

所以,我有一个二进制文件 (data.bin),它总是在增加新的行,script.I正在尝试读取并将其转换为十六进制,效果很好,它输出嗯:

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 

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

当您重定向命令的输出时,输出流会变成完全缓冲的,因此在刷新之前它是不可见的。您可以阅读例如 this link 了解更多信息。

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

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

这样每行都会刷新输出。