首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从csv搜索关键字并显示结果

从csv搜索关键字并显示结果
EN

Stack Overflow用户
提问于 2019-06-04 03:36:36
回答 2查看 35关注 0票数 0

在CSV中包括softname列

我需要搜索一个包含7-zip (或cmm)的关键字,如果它被搜索,显示它的版本。

代码语言:javascript
运行
复制
$csvtxt = @'
softname,version
7-Zip 18.05 (x64),18.05
Adobe Acrobat DC,18.011.20038
Adobe CMM,1.0
Adobe Flash Player 27 ActiveX,27.0.0.187
Adobe Flash Player 27 PPAPI,27.0.0.187
'@

$csv = ConvertFrom-Csv $csvtxt
$soft1 = "7-zip"
$soft2 = "cmm"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-04 03:45:23

您可以在这里使用Where-Object cmdlet。

代码语言:javascript
运行
复制
ConvertFrom-Csv $CSVTxt | Where-Object -FilterScript { $_.SoftName -match "7-zip|cmm" } | Select-Object -Property Version

了解有关何处对象这里的更多信息。

票数 0
EN

Stack Overflow用户

发布于 2019-06-04 03:54:22

您可以使用-match对集合的工作方式。它将提供与regex模式匹配的对象。

它所做的..。

  • 通过在CSV文件中伪造读取创建要使用的数据集
  • 创建要检查的软件列表
  • 将该列表转换为转义正则表达式或模式。
  • 使用上面的模式对集合运行-match操作符
  • 将结果保存到$FoundSoftware集合
  • 在屏幕上显示出来

这是密码..。

代码语言:javascript
运行
复制
# fake reading in a CSV file
#    in real life, use Import-CSV
$InStuff = @'
softname,version
7-Zip 18.05 (x64),18.05
Adobe Acrobat DC,18.011.20038
Adobe CMM,1.0
Adobe Flash Player 27 ActiveX,27.0.0.187
Adobe Flash Player 27 PPAPI,27.0.0.187
'@ | ConvertFrom-Csv

$SoftwareList = @(
    '7-zip'
    'cmm'
    )
$Regex_SL = $SoftwareList.ForEach({[regex]::Escape($_)}) -join '|'

$FoundSoftware = $InStuff -match $Regex_SL
# if you dislike the way that "-match" works directly on an array, use the next line 
#$FoundSoftware = $InStuff.Where({$_.SoftName -match $Regex_SL})

$FoundSoftware

输出..。

代码语言:javascript
运行
复制
softname          version
--------          -------
7-Zip 18.05 (x64) 18.05  
Adobe CMM         1.0  

如果您只想要赤裸裸的名称,可以使用Select-Object -ExpandProperty来获得它。笑一笑

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

https://stackoverflow.com/questions/56437025

复制
相关文章

相似问题

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