我正在使用Powershell来过滤和显示CSV所在行中带有“ [N / A]”的项目
以下是“摘要”标签下CSV上的项目
1) 629eda518c07d4012e04000034285c07.httpprxp.dll with hash [N/A] was executed on PC\KTD1234.
2) 6d4d73457f07d4011c0a0000b410742c.utcutil.dll with hash [N/A] was executed on PC\KTD1234.
3) 1qx4e22r.bp3.ps1 with hash [ca8a261820bf6a2a75390168e9e7264c396bfc689047ecd08f87df05c50dc72d] was executed on PC\KTD1234.
下面的代码是我拥有的,但似乎没有显示N / A项目
$CSV = Import-Csv "C:\Users\DS\Desktop\Scripts\Remove NA.csv" -Header "Summary" -Delimiter :
foreach ($thing in $CSV){Write-Host $thing.Summary |
where {$_.Summary -contains '\[N/A\]'} }
此表上有数千个项目,因此我认为正则表达式是实现此目的的方法。有没有更好的方法来使此工作?
答案 0 :(得分:2)
虽然它本身没有违反CSV标准,但您提供的数据实际上并不是CSV。您可以只使用Get-Content,然后使用-match进行过滤:
Get-Content "C:\Users\DS\Desktop\Scripts\Remove NA.csv" | Where-Object{$_ -match ' \[N/A\] '}
答案 1 :(得分:0)
保存?Excel?作为csv的工作表并不能使其成为csv-至少不是格式正确的人。
我将其视为纯文本文件,因此会对其进行处理。
请参见get-help about_comparison_operators
-包含的内容不是基于RegEx而是基于文字
如果您要删除与[N/A]
匹配的行,请将您的位置从-contains改为-notmatch与转义的'\[N/A\]'