2016-12-04 56 views
1

我有datafile文件,這或多或少看起來是這樣的:如何打印特定行中的最後一列?

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

我想要做的是:

  1. 查找包含字符串「結果」行了。
  2. 列出這三個結果,但只有最後一列是重要的。
  3. 只顯示正面的。

我試圖解決我的問題與awk命令這對於每個結果看起來是這樣的:

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

我希望得到第一陽性結果:

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

但是相反的預期結果我得到了錯誤Integer expression expected。因此得出的結論是變量res1不是數字值。任何想法如何正確定義它?

+0

當'res1 =「50 \ n-75 \ n80」'時,if語句不會理解。在一個awk調用中嘗試一切。 –

回答

1

像這樣的東西可能會奏效:

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

基本上當行Results傳遞變量f設置爲3。

然後打印下一行的最後一列,只要f > 0$NF > 0$NF是最後一列。