我使用以下方法从.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现在,我需要根据实际的值执行一些操作(以运行脚本)。(例如,如果比.小或大,就这样做.)做这件事的最佳方法是什么?
发布于 2016-03-04 07:39:24
您应该将导入的数据存储在一个变量中:
$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
}
}您可以与-and -or运算符以及逻辑运算符(如-eq、-lt、-gt、-match、-nomatch等)进行混合和匹配。
我从您的问题中假设,您希望将“实际”属性与某个int/double值相匹配。然后,您可能希望使用例如-lt或-gt。示例:$row.actual -lt 70 (如果值小于70)。
有关逻辑运算符的更多信息,请参见about_logical_operators或此链接:https://technet.microsoft.com/en-us/library/hh847789.aspx
https://stackoverflow.com/questions/35786399
复制相似问题