2016-12-28 53 views
0

我試圖得到這個當「行」的格式爲### ###的工作數據的轉換浮點數整數通過文件讀取

示例行:

Query_time: 188.882 

當前腳本:

#!/bin/bash 

while read line; do 
    if [ $(echo "$line" | cut -d: -f2) -gt 180 ]; 
    then 
     echo "Over 180" 
    else 
     echo "Under 180" 
    fi 
done < test_file 

錯誤,我得到:

./calculate: line 4: [: 180.39934: integer expression expected 
+0

我添加了錯誤輸出 – user3299633

回答

1

可以使用此AWK:

$ echo Query_time: 188.882 | awk '{ print ($2>180?"Over ":"Under ") 180 }' 
Over 180 

它以第二空間分隔的字段($2)和使用條件運算輸出,如果它是在或(小於或等於)180.

2

如果您有:

line='Query_time: 188.882' 

這個表達式:

$(echo "$line" | cut -d: -f2) -gt 180 

會給出錯誤invalid arithmetic operator因爲BASH無法處理浮點數。

可以使用此awk命令:

awk -F ':[ \t]*' '{print ($2 > 180 ? "above" : "under")}' <<< "$line" 
above 
+1

我想我真的沒有必要使用'int'。或者那個'-F'。這真的是7點30分AM在這裏... –

0

user3299633,當然像詹姆斯的nic e解決方案。只有我在if和else條件下才能做到這一點。

awk '{if($2>180){print "over 180"} else {print "under 180"}}' Input_file 

希望這會有所幫助。