使用Powershell从包含特定单词的CSV中删除行?

时间:2015-01-14 18:40:22

标签: powershell csv

以下是我的CSV文件中的一些示例行。

"ComputerName","Name","Publisher","InstallDate","EstimatedSize","Version","Wow6432Node"
"pcnumber1","Service Pack 1 for Microsoft Office 2013 (KB2850036) 32-Bit Edition","Microsoft P",,"0",,"True"
"pcnumber1","CCleaner","Piriform",,"0","5.01",

原始脚本从指定的计算机中提取有关已安装软件的大量信息,并将其输出为CSV格式。我想获取该CSV文件并删除所有包含" Microsoft P"在他们中。我已经找到了如何从字符串中删除特定单词,如何查找和替换等等。虽然我很难找到这个特定的功能。

4 个答案:

答案 0 :(得分:6)

您可以导入,选择所有不包含" Microsoft P"使用Where-Object,并导出:

Import-Csv test.csv | where {$_.Publisher -ne "Microsoft P"} | Export-Csv New.csv -notypeinfo

答案 1 :(得分:2)

您可以使用FINDSTR作为Mark Setchell的建议。只需指出它是带有/C的文字搜索字符串。

FINDSTR /V /C:"Microsoft P" SomeFile.CSV > NewFile.CSV

答案 2 :(得分:2)

或者,如果您需要PowerShell解决方案,您可以忽略它是CSV的事实,并将其视为文本文件。然后你可以:

Get-Content C:\Path\To\File.csv | Where{$_ -notmatch "Microsoft P"} | Out-File C:\Path\To\NewFile.csv

答案 3 :(得分:0)

您可以使用

FINDSTR /V /C:"Microsoft P" /C:"Linux R" /C:"Whatever W" SomeFile.CSV > NewFile.CSV