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