2016-05-03 6 views
-1

Kb/s以下のデータから抽出する必要があります。値の比較Unix

read:    ops/s   Kb/s   Kb/op   retrans   avg RTT (ms) avg exe (ms) 
       11.888   919.508   77.347  -2 (-0.0%)   3.486   3.607 

私は '{$ 3印刷}' のawkを印刷しようとしていますが、それはKB/OPからKB/sのように列名が、印刷値を印刷します。

Kb/s 
77.340 

あなたは私が必要なvalue.i.e KB /秒= 919.452

-Thanksをgrepすることができますどのようにアドバイスをしてくださいできます。

+1

を?それらはタブで区切られているのですか?タブで区切られている場合は、式awk BEGIN {FS = "\ t"}にフィールド区切り文字を使うことができます。タブセパレータの正確な形式はお使いのOSによって異なるかもしれませんが、{print $ 3} '' – LHWizard

+0

'read:'は余分なフィールドとして扱われますので、1フィールドのオフセットがあります。簡単な回避策はsedまたはawkで削除することです。 – xvan

+0

@xvan:説明してください、どうすればいいですか?ありがとう – Vijay

答えて

2

ヘッダーには、データセットと比較して1つ余分な列があるためです。試してみてください:

awk '$2 ~/^[0-9]+/ {print $2}' 
+0

ありがとうございました。そのコマンドが何をしているか説明してください。 – Vijay

+0

1つ以上の数値で始まる2番目のフィールドを探します。これにより、ヘッダーがスキップされます。コードの下に – adesilva

+0

が失敗している場合、配列は値をif条件に渡していません。 '{rops [i]} == 4000]]の場合、' rope [*]}のiのための 'echo" ropsは$ {rops [*]} " です。 は です。 エコー "問題がある" fi done ' – Vijay

2

あなたは@xvanのような入力がコメントし、 "修正" することができます

sed 's/^read//' inputfile | awk '{print $2}' 

または適切なフィールドを選択するにはawkの指示:列が分離されているどのように

awk '{print ($1=="read:")? $3 : $2}' inputfile