続・tail -f foo.txt | cut -f1,2,3

id:Felio に教えてもらった順番でやってできた!! とほざいてましたが,
完全に勘違いでした.あの時は視界不良,片頭痛の前兆どまんなかだったので,
ぼけぼけでした.
おしえてもらったのは,

cut -f1 foo.txt | tail -f

だけど,これだと,できないみたい.そもそも,シェルがパイプをほいさほいさとつなげて,
ぶりっ,ぶりっと fork() して,execve() 系かますわけで,んときに,cut への入力は,ファイルで,
そのファイルには終わりがあるので,うまいこといかんと.
(推測で喋ってますんで,間違ってたらつっこみよろしく!!)
てかよー,お父さんは,コメントをくれた時間の方が問題な気がしてよー.
起床した時間だとしたら,おじいさんですぜ?(笑
ま,おいといて,


今,実際,Debian 上で,

$ cut -f1 foo.txt | tail -f

とやると,ジョブが終了します.


というわけでだ,順番は,

$ tail -f foo.txt | cut -f1

で,いいわけだ.
だが,ここが鬼門なんですよ,奥さん.
百聞は一軒にしかず.

$ cat foo.txt
first
second
third
fourth
fifth
sixth
seventh

$ tail -f foo | cut -f1
first
second
third
fourth
fifth
sixth

# 違う端末から,

$ echo "eighth" >> foo

# とやると,tail -f している端末は,次のように変化します.

$ tail -f foo | cut -f1
first
second
third
fourth
fifth
sixth
seventh

そうなんです.何度もいいますが,1行おっくれってる〜!! 状態なんです.
はやりについていけてないんです.これだと意味ないので,結局 tail オンリーで使ってます.
ま,80年代の音楽がいいといわれれば,その気持ちもわかるけど,ねぇ? 別に関係ないし,音楽.


簡単に試したところ,-b オプション,もしくは,-c オプションだと,きちんと,流行に乗ってくれます.
つまり,

$ tail -f foo | cut -b1-10 # 各行の先頭10バイト
# もしくは,
tail -f foo | cut -c1-10 # 各行の先頭10文字,マルチバイトはどうなるかしらん.
# というか,先頭10文字という解釈もあっているかどうか微妙.these characters なんで.

だと,のりおくれないんですよ.
さて,原因の調査はどうするべ?
だれかやるの?
それとも,既出で,代替方法があるのか?
わかる人教えてください.