【问题标题】:Recording particular cell of a table on the basis of a certain condition using grep使用 grep 根据特定条件记录表格的特定单元格
【发布时间】:2021-11-30 06:30:11
【问题描述】:

我有许多表格,如下所示:

 time | node  | left  |LP iter|LP it/n|mem/heur|mdpt |vars |cons |rows |cuts |sepa|confs|strbr|  dualbound   | primalbound  |  gap   | compl. 
  0.0s|     1 |     0 |   100 |     - |  1046k |   0 | 100 | 102 | 100 |   0 |  0 |   0 |   0 |      --      | 9.999990e+05*|    Inf | unknown
* 0.3s|     1 |     0 |   100 |     - |    LP  |   0 | 200 | 102 | 100 |   0 |  0 |   0 |   0 |      --      | 5.587300e+04 |    Inf | unknown
 12.0s|     1 |     0 |   239 |     - |  1781k |   0 | 239 | 102 | 100 |   0 |  0 |   0 |   0 | 5.577800e+04 | 5.587300e+04 |   0.17%| unknown
 12.1s|     1 |     0 |   287 |     - |  2595k |   0 | 239 | 102 | 935 | 835 |  1 |   0 |   0 | 5.577800e+04 | 5.587300e+04 |   0.17%| unknown
 66.8s|     1 |     0 |   422 |     - |  3061k |   0 | 336 | 102 | 935 | 835 |  1 |   0 |   0 | 5.577800e+04 | 5.587300e+04 |   0.17%| unknown
 89.4s|     1 |     0 |   481 |     - |  3218k |   0 | 361 | 102 | 935 | 835 |  1 |   0 |   0 | 5.580100e+04 | 5.587300e+04 |   0.13%| unknown
 89.5s|     1 |     0 |   579 |     - |  3513k |   0 | 361 | 102 |1335 |1235 |  2 |   0 |   0 | 5.580100e+04 | 5.587300e+04 |   0.13%| unknown
  100s|     1 |     0 |   715 |     - |  3837k |   0 | 403 | 102 |1335 |1235 |  2 |   0 |   0 | 5.583250e+04 | 5.587300e+04 |   0.07%| unknown

我有兴趣在间隙列(表格的倒数第二列)中记录第一个数值。间隙列中可能包含 Infx.xx% 值。如果间隙列中的所有值都是Inf,那么我就简单记录Inf,否则,我想记录第一个数值。例如在上表中,我要记录的值是0.17。我尝试了许多不同的方法,但都没有取得任何成功。如果有人可以就如何实现上述目标提供一些指导,那就太好了。谢谢!

【问题讨论】:

    标签: shell scripting grep


    【解决方案1】:

    您可以使用这个 awk 解决方案:

    awk -F '[[:blank:]]*\\|[[:blank:]]*' '
    NR > 1 && (!v || v == "Inf") {
       v = ($(NF-1) == "Inf" ? $(NF-1) : $(NF-1)+0)
    }
    END {
       print v
    }' file
    
    0.17
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      相关资源
      最近更新 更多