我怎样才能比较bash中的浮点数

时间:2018-03-07 06:30:36

标签: bash bc

处理脚本,我目前陷入困境。 (还是很新的)

首先我有我的数据文件,我在里面搜索的文件。 第一个字段是名称,第二个是付款,第三个是欠款。

customerData.txt

 name1,500.00,1000
 name2,2000,100
 name3,100,100.00

这是我的bash文件。基本上如果欠款金额大于付款金额,则打印名称。适用于任何不浮动的东西。我也明白bash不处理浮动,处理它们的唯一方法是使用bc实用程序,但我没有运气。

#!/bin/bash

while IFS="," read name paid owe; do
    #due=$(echo "$owe - $paid" |bc -1)
    #echo $due
    if [ $owe -gt $paid ]; then
        echo $name
    fi
done < customerData.txt

1 个答案:

答案 0 :(得分:3)

打印第三列大于第二列的所有行:

$ awk -F, '$3>$2' customerData.txt 
name1,500.00,1000

如何运作

  • -F,告诉awk列是逗号分隔的。

  • $3>$2告诉awk打印第三列大于第二列的任何行。

    更详细地说,$3>$2是一个条件:它的计算结果为true或false。如果它的计算结果为true,则执行该操作。由于我们没有指定任何操作,因此awk会执行默认操作,即打印该行。