2015-04-01 60 views
0

我有文件node_avg.in。該文件每5分鐘更改一次值AVAIL_NODE應該計算。好心幫添加行到文件結尾 - 使用for循環 - linux腳本

[[email protected] 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  | 

我只是嘗試,但不能helped.pls在下面的腳本來看看

[[email protected] 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 

[根@本地樣本]#

+0

你向我們展示了一個文件,如果它是一個樣本輸入文件或所需的輸出文件,一個腳本這並不做任何事是你想做的事不明確,要求我們幫助你做任何你是試圖去做。考慮一下。您可能想要編輯您的問題,以提供明確的示例輸入,預期輸出和要求。 – 2015-04-01 14:57:24

回答

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 
1

你必須使用雙()來評估表達式:

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