27

コンテンツの最後の数行のファイルを継続的に表示する方法について、Unix コマンド (おそらく組み合わせ) を見つけようとしています。しかし、この表示中、ローリングコンテンツが画面上部に到達したときに、常に上部の行の一部が画面上部に表示されるようにしたい.

それは可能ですか?

  1. ファイル「job.sta」があるとします。最初の 2 行は次のとおりです。
    job name, John's job on 2013-Jan-30,...
    Tab1, Tab2, Tab3
    0, 1, 2,
    1, 90, 89
    2, 89, 23
    ...
    
  2. このファイルは実行中であり、その内容は拡大しており、どの行で終了するかわかりません。
  3. そこで、更新内容が Unix シェルの画面上部に到達したときに、tail コマンドを使用するときに (常に) 最初の 2 行を表示したいと考えています。現在、PuTTY を使用しています。

参照: http://www.unix.com/unix-dummies-questions-answers/172000-head-tail-how-display-middle-lines.html

4

6 に答える 6

63

私はこの機能を常に使用して、別のターミナル ウィンドウでログ ファイルを監視しています。

tail -f <filename>

ログ内の特定のテキストを探すために一歩前進することをお勧めします。特定のエントリがファイルに書き込まれていることだけに関心がある場合に最適です。

tail -f <filename> | grep <keyword or pattern>
于 2014-03-27T00:41:47.537 に答える
26

これは、データがファイルに書き込まれるたびではなく、2秒ごとに更新されますが、おそらくそれで十分です。

watch 'head -n 2 job.sta; tail job.sta'
于 2013-01-30T18:11:49.380 に答える
8

screen予想される動作をシミュレートするために使用できます。

  1. を実行screenし、 を押しSpaceます。

  2. Ctrl+を押しaてから を押しSて、画面を分割します。

  3. Ctrl+aに続いてを押して、トップ ウィンドウのサイズを変更します:resize 4

  4. 上部ウィンドウのプロンプトで、 と入力しますhead -n2 file

  5. Ctrl+aに続いてを押して、一番下のウィンドウに移動しますTab

  6. Ctrl+aに続いてを押して、新しい画面セッションを開始しcます。

  7. 新しいプロンプトで、 と入力しtail -f fileます。

于 2013-01-30T13:20:49.597 に答える
4

このスクリプトを使用して、説明した効果を実現します

!#/bin/bash
while [ 1 ]; do ls -lt data | head -n 30; sleep 3; echo -en "$(tput cuu 30; tput ed)"; done

これはコマンドをループで実行し、各反復の前に出力の最後の行を画面から削除します。

あなたの場合、それは次のようになります

!#/bin/bash

while [ 1 ] ;# loop forever
do 
    head -n 2 job.sta ;# display first 2 lines 
    tail -n 30 job.sta ;# display last 30 lines from file
    sleep 3 ;# wait a bit
    echo -en "$(tput cuu 32; tput ed)" ;# delete last 32 lines from screen
done

もちろん、ファイルが 30 行に達する前は少し醜いです。

それが役立つことを願っています

于 2013-01-30T13:01:10.777 に答える
2

multitail分割画面だけでなく、色分けも行うプログラムが必要です。

http://www.vanheusden.com/multitail/

于 2013-01-30T18:40:13.880 に答える
1

次の組み合わせを試してください tail -f filename | 頭-2

于 2013-01-30T12:51:37.487 に答える