2016-12-04 82 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是最后一列。