让awk过滤无尽的管道
使用“cat/dev/tty0”,我可以读取连续的输入字符流。一些传入的“电报”由新行字符分隔。 不,我想按awk筛选,但我不知道如何启动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 > 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}”