在文件末尾添加行-使用for loop-linux脚本

在文件末尾添加行-使用for loop-linux脚本,linux,bash,shell,for-loop,awk,Linux,Bash,Shell,For Loop,Awk,我有文件节点_avg.in。此文件每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

我有文件节点_avg.in。此文件每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示例]#

您必须使用double
来计算表达式:

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

您可以使用更简单的方法,如
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

您向我们展示了一个文件,不清楚它是示例输入文件还是所需的输出文件,以及一个脚本,该脚本不执行您想执行的操作,并要求我们帮助您执行您想执行的操作。想想看。您可能希望编辑您的问题,以提供清晰的示例输入、预期输出和要求。