如何在bash中比较浮动
正在编写脚本,我现在被卡住了。(这方面还是很新的) 首先,我有我的数据文件,我在里面搜索的文件。 第一个字段是名称,第二个字段是已付款,第三个字段是欠款 customerData.txt如何在bash中比较浮动,bash,bc,Bash,Bc,正在编写脚本,我现在被卡住了。(这方面还是很新的) 首先,我有我的数据文件,我在里面搜索的文件。 第一个字段是名称,第二个字段是已付款,第三个字段是欠款 customerData.txt name1,500.00,1000 name2,2000,100 name3,100,100.00 这是我的bash文件。基本上,如果欠款金额大于已付金额,则打印姓名。适用于任何不是浮动的东西。我也知道bash不处理浮动,处理浮动的唯一方法是使用bc实用程序,但我运气不好 #!/bin/bash wh
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
#/bin/bash
当IFS=“,”时,读取支付的姓名;做
#到期=$(回显“$欠-$付”| bc-1)
#回音$到期
如果[$欠款-gt$已付];然后
echo$name
fi
完成
要打印第三列大于第二列的所有行:
$ awk -F, '$3>$2' customerData.txt
name1,500.00,1000
工作原理
告诉awk列是逗号分隔的-F,
告诉awk打印第三列大于第二列的任何行 更详细地说,$3>$2
是一个条件:它的计算结果为true或false。如果计算结果为true,则执行该操作。由于我们没有指定任何操作,awk执行默认操作,即打印行$3>$2
printf
,所以它能够打印复杂的输出。它还可以处理多个文件,比如从一个文件中收集电子邮件地址,从另一个文件中选择债务人,并将输出写入第三个文件。您的解决方案确实对我有帮助。因为awk有内置的替换函数(如sub
和gsub
),它可以做sed能做的任何事情。我将把您的答案标记为解决方案,因为它确实适用于我提出的问题。谢谢你,我都没想过要这么做。