から2行に参加して、プロセス:は、私はtopコマンドの出てくる2つの行を結合し、処理したいtopコマンドの出力
shell> top -p 1 -b -d 1 | egrep '^top|^Cpu'
top - 15:17:45 up 736 days, 4:32, 3 users, load average: 0.06, 0.03, 0.00
Cpu(s): 0.7% us, 0.8% sy, 0.0% ni, 97.1% id, 1.3% wa, 0.0% hi, 0.0% si
のawkとsedのコマンドを使用しようとすると、私はトラブルに実行します - 出力は生成されない。どのようなコマンドは、私はこのようにして出力を取得するために使用します。ここでは
Time: 15:17:45 Cpu(s): 0.7% us, 0.8% sy, 0.0% ni, 97.1% id, 1.3% wa, 0.0% hi, 0.0% si
が役に立つかもしれないコードの一部です:
command | sed -n "N;s/top - /Time: /;s/up.*\n//;p"
時:
shell> echo 'top - 15:17:45 up 736 days, 4:32, 3 users, load average: 0.06, 0.03, 0.00' | awk -F' up' '/^top/ {print "Time: " $1}' | sed 's/top - //'
Time: 15:17:45
あなたのコマンドは最初に出力を生成しませんでした。ある量のバッファがいっぱいになると出力が書き出されることを知りました。 sedのバッファ時間や行数を制御する方法があるので、出力はより定期的に出力されますか? – dabest1
私の編集した答えを見てください。これはうまくいくはずです。 – Chris
ありがとう@クリス。 awkコマンドで遅れずに画面に表示しますが、ファイルに出力してテールしても、一度に1行は出力されません。それはそれほど重大ではありませんが、私はバッファリングの原因と回避方法を非常に興味があります。 – dabest1