使用2个剪切变量进行除法

时间:2018-10-10 17:19:17

标签: bash division cut

我有以下代码:

#!/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。但是,该划分无法正常工作。

2 个答案:

答案 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