【问题标题】:add lines to end of file - using for loop - linux script在文件末尾添加行 - 使用 for 循环 - linux脚本
【发布时间】:2015-06-06 01:55:59
【问题描述】:

我有文件 node_avg.in。此文件每 5 分钟更改一次值,因此 AVAIL_NODE 应计算。请帮忙

[root@localhost sample]# cat node_avg.in
 QUEUE_NAME | ALLOC_NODES | RUN_NODES  | AVAIL_NODE
 team1      | 2384        | 1019       | xxx
 team2      | 300         | 280        | xxx
 team3      | 90          | 0          | xx
 team4      | 240         | 236        | 
 team5      | 90          | 27         | 
 team6      | 120         | 0          | 
 team7      | 270         | 146        | 

我刚试过,但没用。请看下面的脚本

 [root@localhost sample]# cat avg.in
 for i in team1 team2 team3 team4 team5 team6 team7 
 do
 ALLOC_NODES=$( cat /root/script/sample/node_avg.in | grep $i | grep -v QUEUE_NAME | awk '{print $3}')
 RUN_NODES=$(cat /root/script/sample/node_avg.in | grep $i | grep -v QUEUE_NAME | awk '{print $5}')
 avail=$($ALLOC_NODES - $RUN_NODES)
 done

[root@localhost 示例]#

【问题讨论】:

  • 您向我们展示了一个文件,不清楚它是示例输入文件还是所需的输出文件,以及一个不执行您想做的任何事情的脚本,并要求我们帮助您做任何事情你正在尝试做。考虑一下。您可能需要编辑您的问题以提供清晰的示例输入、预期输出和要求。

标签: linux bash shell for-loop awk


【解决方案1】:

您可以使用更简单的方法,例如awk -F\| '{ print $1 $2-$3}' 来为您计算。

cat node_avg.in | awk -F\| '{ print $1  $2-$3}'  | tail -n +2
 team1      1365
 team2      20
 team3      90
 team4      4
 team5      63
 team6      120
 team7      124

【讨论】:

    【解决方案2】:

    你必须使用 double ( ) 来评估表达式:

    avail=$(($ALLOC_NODES - $RUN_NODES))
    

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 2013-04-05
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 2016-01-08
      • 1970-01-01
      相关资源
      最近更新 更多