Return "distance before" 小于参数中给出的数字时的日期和时间

Return the date and time when the "distance before" is less than the number given in the argument

我有以下 selfdriving.log 自动驾驶汽车文件:

2021.04.01., 13:14:30:78, 78, 110, 110
2021.04.01., 13:14:30:99, 79, 111, 111
2021.04.01., 13:14:31:50, 80, 111, 119
2021.04.01., 13:14:59:87, 87, 118, 117
2021.04.01., 13:16:59:87, 86, 116, 119
2021.04.01., 13:17:22:32, 75, 117, 115
2021.04.01., 13:18:50:65, 75, 96, 109
2021.04.01., 13:18:55:00, 20, 30, 57

其中每一行都有日期、时间、车辆的速度和车辆前后的测量距离。当车辆前的距离小于终端中给出的参数时,我必须 return 日期和时间。 所以对于 ./logReading.ps1 100 它应该 return:

2021.04.01. 13:18:50:65
2021.04.01. 13:18:55:00

现在,我有这个代码:

$k=$args[0]
write-host $k

get-content .\selfdriving.log | foreach{
    $date,$time,$speed,$before,$after = $_.split(", ").trim()
    if($before -gt $k){
        write-host $date, $time
    }
}

但出于某种原因,无论我在 if 语句中如何写不等式,我总是得到 logReading.ps1 100.

的错误值

$before 是字符串类型,因此在比较之前需要将 $before 转换为 int

> "96" -gt 100
True
> [int]"96" -gt 100
False

所以你的最终 if 声明应该是这样的。

if([int]$before -gt $k){
   Write-Host $date, $time
}

或者,您也可以在解包语句中更改类型。

$date,$time,$speed,[int]$before,$after = $_.split(", ").trim()