2012-03-02 7 views
0

"cat/dev/tty0"入力文字の連続ストリームを読むことができます。着信する「テレグラム」の中には、改行文字で区切られているものがあります。 いいえこれをawkでフィルタリングしたいのですが、awkを分析を開始する方法を理解できません。何もshowlingない、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

答えて

1

tail -fを試してみることもできます。

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

tailは、所与のプロセスが死ぬときtailを停止--pid=nnnような用途であってもよい他のオプションを有しています。ビッグ-Fあなたの味に応じて、動作するかもしれません。

+0

あなたはおそらくこれを実行できませんttyがあなた自身の端末である場合、バックグラウンドで。 – groovyspaceman

3

これはバッファリングが原因である可能性があります。私はあなたの結果を再現するように見えるが、これ(stdbufがcoreutilsのの一部である)しようとすることはできません。

stdbuf -i0 -o0 -e0 cat /dev/tty0 | awk '{printf "%s\n",$1}' 

またはこの(バッファー解除は期待の一部です):

unbuffer cat /dev/tty0 | awk '{printf "%s\n",$1}' 

またはこの:

awk '{printf "%s\n",$1}' < /dev/tty0 
+0

ありがとうEduardoあなたのstdbufの例がうまくいきます! – Achim

+0

しかし、私はまだLinuxパイプの知識のいくつかの基本的な欠如しています:-(私の質問では、私は小さな詳細を抑制:テレグラムは24バイトのtty0バイナリ形式で受信されるので、ASCIIに変換するために "| od -w24 stdbuf/catとawkの間に "-An -tu1"がありますが、もう一度動作しません....--( – Achim

+0

私はそれを持っています、単にstdbufを2回使用します: "* stdbuf -i0 -o0 -e0 cat/dev/tty0 | stdbuf -i0 -o0 -e0 od -w24 -An -tu1 | awk '{printf "Temp:%s \ n"、$ 1}' * " – Achim

関連する問題