通过文件读取将浮点数转换为整数

Convert Floating Point Number To Integer Via File Read

当 "line" 的格式为 ###.###

时,我正试图让它工作

示例数据行:

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

如果你有:

line='Query_time: 188.882'

这个表达式:

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

将给出错误 invalid arithmetic operator,因为 BASH 无法处理浮点数。

您可以使用这个 awk 命令:

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

你可以使用这个 awk:

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

它采用第二个 space 分隔字段 () 并使用条件运算符输出,如果它超过或 低于(小于或等于) 180.