我正在尝试过滤一个在终端中连续显示日志的命令的输出,以使其对人类更具可读性
这个函数是特定于硬件的(并且所讨论的硬件不是很有名(,这就是为什么我在这里以dmesg -w
命令为例,因为我认为它们具有几乎相同的行为。
我只想显示任何关于USB的消息的":"后面的部分。到目前为止,我尝试运行:
$ dmesg -w | grep usb | cut -d':' -f2
但它没有显示任何东西。当我在没有dmesg
的-d
选项的情况下运行相同的命令时,我得到了正确的输出。
cut
函数是正确的方法吗?我做错了什么?
我不是很擅长bash,我希望有人能帮助我:|
管道是块缓冲的。
stdbuf -oL dmesg -w | grep --line-buffered usb | cut -d: -f2
剪切函数是正确的方法吗?
当然。
我做错了什么?
输出在内部缓冲区中进行缓冲。为每个命令设置行缓冲,使输出刷新每个换行符。