2017-02-17 7 views
0

topの出力から特定のフィールドを取得する必要があります。それ、どうやったら出来るの?awkを使用したトップコマンドのフィールド区切り

私はtop行から時間、及びMem行から使用値を必要

top -b -n 10 -d 10 

top - 05:16:04 up 24 days, 49 min, 2 users, load average: 0.00, 0.00, 0.00 
Tasks: 494 total, 1 running, 493 sleeping, 0 stopped, 0 zombie 
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 
Mem: 65971500k total, 4028640k used, 61942860k free, 420512k buffers 
Swap: 10485756k total,  0k used, 10485756k free, 1134108k cached 

を有します。この例では、それは05:16:044028640kです。

{ 
    for (i=1;i<NF;i++) { 
     if($i~/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/){ 
      print $i 
     } 
    } 
} 

私はメモリを使用し抽出するにはどうすればよい:

次awkスクリプトは私に時間フィールドを取得しますか?

+0

awk '/^top/{printf("%s",$3)}/^Mem:/{print OFS $4}' 
AWK '{用(i = 1; iはNF <; iは++) {IF($ I〜/ [0-9] [0-9] [0-9] [0-9] :[0-9] [0-9] /){print $ i}}} ' – Mani

+0

あなたの予想される出力はどれですか? –

+0

こんにちはホセ、私は最初の行から05:16:04を必要とし、メモリを使用4028640k 3行目から使用Mem:すべてのインスタンスのために – Mani

答えて

0

私はENDセクションを使用トップ

awk '$1 ~ /^top$/ { Time = $3 } 
    $1 ~ /^Mem:$/ { Mem = $4 #it include the trailing "k"} 
    END { print Time OFS Mem } 
    ' 

のスペースで区切られたデフォルトである「フィールド」、および(フィールド参照など)情報の固定位置を読み取るためにAWKの能力を使いますそれを後でキャッチして使用する方法を示すための情報を思い出させるための変数と変数がありますが、このような場合は直接printfで十分です。

+0

ありがとうございました:) – Mani

関連する問題