使用“cat / dev / tty0”我可以读取连续的输入字符流。一些传入的“电报”由新行字符分隔。 不,我想通过awk过滤这个,但我无法弄清楚如何启动awk进行分析。它似乎总是等待文件结束,我在stdout上看不到结果
这样可行,显示每行的第一个字:
cat /dev/tty0 > myfile (cancel somtime with Ctrl-C)
cat myfile | awk '{printf "%s\n",$1}'
但这不是,什么都不显示:
cat /dev/tty0 | awk '{printf "%s\n",$1}'
任何想法? Achim的
答案 0 :(得分:3)
这可能是由于缓冲造成的。我似乎无法重现你的结果,但试试这个(stdbuf是coreutils的一部分):
stdbuf -i0 -o0 -e0 cat /dev/tty0 | awk '{printf "%s\n",$1}'
或者这个(unbuffer是期待的一部分):
unbuffer cat /dev/tty0 | awk '{printf "%s\n",$1}'
或者这个:
awk '{printf "%s\n",$1}' < /dev/tty0
答案 1 :(得分:1)
您可以尝试使用tail -f
。
tail -f /dev/tty0 | awk '{printf "%s\n",$1}'
tail
还有其他可能有用的选项,例如--pid=nnn
会在给定进程终止时停止tail
。大-F
也可能有效,具体取决于您的口味。