首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell .导入的进一步处理-csv数据

Powershell .导入的进一步处理-csv数据
EN

Stack Overflow用户
提问于 2016-03-04 01:30:59
回答 1查看 70关注 0票数 0

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

代码语言:javascript
复制
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"}

其结果是:

代码语言:javascript
复制
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

现在,我需要根据实际的值执行一些操作(以运行脚本)。(例如,如果比.小或大,就这样做.)做这件事的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-04 07:39:24

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

代码语言:javascript
复制
$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"}

之后,根据您对数据的了解,您有几个选项。

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

代码语言:javascript
复制
# 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 
}

如果您不知道行,并且希望迭代每个对象,则执行以下操作:

代码语言:javascript
复制
# 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35786399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档