2016-12-04 13 views
1

私は多かれ少なかれ、このようになりますdatafileファイル持っている:特定の行の最後の列を印刷するにはどうすればよいですか?

*** some text *** 
Results 
1  50 
2 -75 
3  80 
*** some text *** 

私は何をしたいのですが次のとおりです。

  1. は、文字列「結果」を含む行を検索します。
  2. これら3つの結果をリストしますが、最後の列だけが重要です。
  3. 肯定的なもののみを表示してください。

    res1=$(awk '/Results/{nr[NR+1]}; NR in nr' datafile | awk '{print $NF}') 
    

    私はによって最初に肯定的な結果を得ることを望んだ:

    If [ $res1 -gt 0 ]; then 
    echo "$res1" 
    fi 
    

    しかし、その代わりに、私はそれぞれの結果のために、このようになりますawkコマンドを使用して、私の問題を解決しようとしていた

期待された結果の私はエラーInteger expression expectedを持っている。したがって、変数res1は数値ではないという結論に至ります。どのように正しくそれを定義するための任意のアイデア?このような

+0

'res1 =" 50 \ n-75 \ n80 "'の場合、if文は理解できません。 1回のawk呼び出しですべてを試してください。 –

答えて

1

何かがうまくいくかもしれない:行Resultsが渡されたとき、基本的には変数fが3に設定されている

$ awk '$0 == "Results" { f = 3; next } f && f-- && $NF > 0 { print $NF }' input 
50 
80 

次に、次の行の最後の列は、f > 0および$NF > 0$NFが最後の列である限り印刷されます。

関連する問題