通过文件读取将浮点数转换为整数
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.
当 "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.