添加行到文件末尾 - 使用for循环 - linux脚本

时间:2015-04-01 12:11:03

标签: linux bash shell for-loop awk

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

[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 sample]#

2 个答案:

答案 0 :(得分:1)

您必须使用双( )来评估表达式:

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

答案 1 :(得分: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