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

Division by using 2 cut variables

我有以下代码:

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

您的部门无法计算的原因是 cut 为您提供了完整的专栏。所以如果 condutores.txt 有很多行,你会得到很多值,所有值都用 \n 分隔。这不是一个真正的数字。

你可以试试别的东西...

awk '{print /}' FS=":" condutores.txt

您可以使用 awk 在一行中完成此操作!假设我有示例数据(我用它来模仿你的):

1       15      18
2       17      6
3       14      98
4       17      25
5       9       3

这是使用 awk 将第 3 列除以第 2 列的方法:

awk '{print /}' example_file.txt

打印到标准输出:

1.2
0.352941
7
1.47059
0.333333

现在说我只想要那些小于 1 的值:

awk '{if (/ < 1) print [=13=]}' awk_tester.txt

returns 完整行数:

2       17      6
5       9       3

现在如果我们想要实际值:

awk '{if (/ < 1) print /}' awk_tester.txt

returns:

0.352941
0.333333

如果您的字段分隔符是“:”,只需将其添加到每个 awk 命令的开头:

-F ':'

像这样:

awk -F ':' '{if (/ < 1) print /}' awk_tester.txt