我设法使用以下方法从.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
现在我需要根据实际值执行一些操作(运行脚本)。 (例如,如果比这更大或更大,那么......)这样做的最佳方法是什么?
答案 0 :(得分:0)
您应该将导入的数据存储在变量中:
$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"}
此后,根据您对数据的了解,您可以选择一些选项。
如果您知道要匹配的rownumbers,您可以访问它并直接检查属性并执行代码,例如:
# 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等)混合使用。
我假设您的问题是,您希望将“actual”属性与某个int / double值匹配。然后,您可能希望使用例如-lt或-gt。示例:$ row.actual -lt 70(如果值小于70)。
有关逻辑运算符的详细信息,请参阅about_logical_operators或此链接:https://technet.microsoft.com/en-us/library/hh847789.aspx