让awk过滤无尽的管道

让awk过滤无尽的管道,awk,pipe,Awk,Pipe,使用“cat/dev/tty0”,我可以读取连续的输入字符流。一些传入的“电报”由新行字符分隔。 不,我想按awk筛选,但我不知道如何启动awk进行分析。似乎它总是等待文件结束,我在标准输出上看不到结果 因此,这是可行的,显示了我的每行的第一个单词: cat /dev/tty0 > myfile (cancel somtime with Ctrl-C) cat myfile | awk '{printf "%s\n",$1}' 但这不是,什么也没有展示: cat /dev/tty0

使用“cat/dev/tty0”,我可以读取连续的输入字符流。一些传入的“电报”由新行字符分隔。 不,我想按awk筛选,但我不知道如何启动awk进行分析。似乎它总是等待文件结束,我在标准输出上看不到结果

因此,这是可行的,显示了我的每行的第一个单词:

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

这可能是由于缓冲。我似乎无法重现您的结果,但请尝试以下方法(stdbuf是coreutils的一部分):

或者(取消缓冲是expect的一部分):

或者这个:

awk '{printf "%s\n",$1}' < /dev/tty0
awk'{printf“%s\n”,$1}'
这可能是由于缓冲造成的。我似乎无法重现您的结果,但请尝试以下方法(stdbuf是coreutils的一部分):

或者(取消缓冲是expect的一部分):

或者这个:

awk '{printf "%s\n",$1}' < /dev/tty0
awk'{printf“%s\n”,$1}'
您可以尝试使用
tail-f

tail -f /dev/tty0 | awk '{printf "%s\n",$1}' 

tail
还有其他可能有用的选项,如
--pid=nnn
在给定进程死亡时停止
tail
。大的
-F
也可能有效,这取决于你的口味。

你可以尝试使用
tail-F

tail -f /dev/tty0 | awk '{printf "%s\n",$1}' 

tail
还有其他可能有用的选项,如
--pid=nnn
在给定进程死亡时停止
tail
。Big
-F
也可以工作,这取决于您的口味。

顺便说一句,如果tty是您自己的终端,您可能无法在后台运行此功能。顺便说一句,如果tty是您自己的终端,您可能无法在后台运行此功能。但我仍然缺乏Linux管道方面的一些基本知识:-(在我的问题中,我抑制了一个小细节:电报是以24字节的tty0二进制格式接收的,因此为了将它们转换为ASCII,我在stdbuf/cat和awk之间使用了“|od-w24-An-tu1”,但它将再次不起作用……。-(我得到了它,只需使用stdbuf两次:“stdbuf-i0-o0-e0 cat/dev/tty0 | stdbuf-i0-o0-e0 od-w24-An-tu1 | awk'{printf“Temp:%s\n“,$1}”,但我仍然缺乏Linux管道方面的一些基本知识:-(在我的问题中,我抑制了一个小细节:电报是以24字节的tty0二进制格式接收的,因此为了将它们转换为ASCII,我使用了“| od-w24-An-tu1”)“在stdbuf/cat和awk之间,但它将再次不起作用……”(我得到了它,只需使用stdbuf两次:“stdbuf-i0-o0-e0 cat/dev/tty0 | stdbuf-i0-o0-e0 od-w24-An-tu1 | awk'{printf Temp:%s\n',$1}”