Powershell-导入csv数据的进一步过程

Powershell-导入csv数据的进一步过程,csv,powershell,Csv,Powershell,我已使用以下方法从.csv文件导入了csv数据: import-csv -Delimiter "`t"-Header @("planid","partnb","id","type","idsymbol","actual") data.txt | Where-Object {$_.ID -eq "057 L13" -or $_.ID -eq "047 L70.6"} 其结果是: planid : TL_QL FRT Knuckle RH 2WD CNC partnb : M10 4.

我已使用以下方法从.csv文件导入了csv数据:

import-csv -Delimiter "`t"-Header @("planid","partnb","id","type","idsymbol","actual") data.txt | Where-Object {$_.ID -eq "057 L13" -or $_.ID -eq "047 L70.6"}
其结果是:

planid   : TL_QL FRT Knuckle RH 2WD CNC
partnb   : M10   4.1   242
id       : 047 L70.6
type     : Hodn-X
idsymbol : xValue
actual   : 70.7187445

planid   : TL_QL FRT Knuckle RH 2WD CNC
partnb   : M10   4.1   242
id       : 057 L13
type     : Hodn-Z
idsymbol : zValue
actual   : 13.0685455

现在我需要根据实际值执行一些操作(运行脚本)。(例如,如果大于或等于,则执行此操作…)执行此操作的最佳方法是什么?

您应将导入的数据存储在变量中:

$dataset = import-csv -Delimiter "`t"-Header @("planid","partnb","id","type","idsymbol","actual") data.txt | Where-Object {$_.ID -eq "057 L13" -or $_.ID -eq "047 L70.6"}
此后,根据您对数据的了解,您有一些选择

如果您知道要匹配的行号,则可以访问它并直接检查属性并执行代码,例如:

# Code to check if property id of row 3 equals a specific id or planid contains TL_QL
if($dataset[2].id -eq "057 L13" -or $dataset[2].planid -match "TL_QL"){ 
    # Your code to do something 
}
如果您不知道行并希望迭代每个对象,请执行以下操作:

# Improved for readability; you could use $_ directly
$dataset|Foreach-object { 
      $row = $_;
      if($row.id -eq "057"  -or $row.planid -match "TL_QL"){
        # do something
      }
}
您可以混合和匹配-和-或运算符,以及诸如-eq、-lt、-gt、-match、-nomatch等逻辑运算符

根据你的问题,我假设你想要将“实际”属性与某个int/double值匹配。然后,您可能希望使用-lt或-gt作为示例。示例:$row.actual-lt 70(如果值小于70)


有关逻辑运算符的更多信息,请参阅关于逻辑运算符或此链接:

取决于您要采取的操作。在任何情况下,都应该首先将结果分配给变量(
$rows=import csv…
),然后使用
foreach对象
循环来操作数据。例如:
$rows | foreach{“id:+$\.id+”actual:+$\.actual}
如果您知道只需要检查数据一次(
导入csv…| foreach{…}
),则可以跳过该变量,但它可能会导致一些相当长的代码行。
$dataset[2]
将引用第三行,而不是第二行,早上喝咖啡之前太早了!现在更新