我有以下代码:
#!/bin/bash
pontos=$(cat condutores.txt | cut -d ":" -f 10)
nviagens=$(cat condutores.txt | cut -d ":" -f 9)
divisao=$((pontos / nviagens))
echo $divisao
我想将每行的第10列除以condutores.txt
的第9列。将其保存在变量中,然后检查数字是否小于5。但是,该划分无法正常工作。
答案 0 :(得分:0)
您的部门无法解决的原因是cut
为您提供了完整的专栏。因此,如果condutores.txt
有很多行,您将在其中得到许多值,并用\n
分开。这不是一个真正可以除的数。
您可以尝试其他方法...
awk '{print $9/$10}' FS=":" condutores.txt
答案 1 :(得分:0)
您可以使用awk在一行中完成此操作!假设我有示例数据(用于模拟您的数据):
1 15 18
2 17 6
3 14 98
4 17 25
5 9 3
这是使用awk将第3列除以第2列的方法:
awk '{print $3/$2}' example_file.txt
打印到标准输出:
1.2
0.352941
7
1.47059
0.333333
现在从这里说,我只想要小于1的那些值。
awk '{if ($3/$2 < 1) print $0}' awk_tester.txt
返回完整的行:
2 17 6
5 9 3
现在我们是否需要实际值:
awk '{if ($3/$2 < 1) print $3/$2}' awk_tester.txt
返回:
0.352941
0.333333
如果您的字段分隔符为':',只需将其添加到每个awk命令的开头:
-F ':'
像这样:
awk -F ':' '{if ($3/$2 < 1) print $3/$2}' awk_tester.txt