如何比较 bash 中的浮点数
How can I compare floats in bash
正在编写脚本,但我目前遇到了困难。 (在这方面还是很新)
首先我有我的数据文件,我正在里面搜索的文件。
第一栏是姓名,第二栏是付钱,第三栏是欠钱。
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
要打印第三列大于第二列的所有行:
$ awk -F, '>' customerData.txt
name1,500.00,1000
工作原理
-F,
告诉 awk 这些列是 comma-separated.
>
告诉 awk 打印第三列大于第二列的任何行。
更详细地说,>
是一个条件:它的计算结果为真或假。如果它的计算结果为真,则执行该操作。由于我们没有指定任何操作,awk 执行默认操作,即打印该行。
正在编写脚本,但我目前遇到了困难。 (在这方面还是很新)
首先我有我的数据文件,我正在里面搜索的文件。 第一栏是姓名,第二栏是付钱,第三栏是欠钱。
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
要打印第三列大于第二列的所有行:
$ awk -F, '>' customerData.txt
name1,500.00,1000
工作原理
-F,
告诉 awk 这些列是 comma-separated.>
告诉 awk 打印第三列大于第二列的任何行。更详细地说,
>
是一个条件:它的计算结果为真或假。如果它的计算结果为真,则执行该操作。由于我们没有指定任何操作,awk 执行默认操作,即打印该行。