2015-01-14 69 views
1

以下是我的CSV文件中的一些示例行。使用Powershell从包含特定单词的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”的所有行。我发现如何从字符串中删除特定的单词,如何查找和替换等等,但我很难找到这个特定的功能。

+2

'FINDSTR/V“微软P” SomeFile.CSV> NewFile.CSV' –

+0

,感觉痛苦地简单,我不知道我怎么错过了它。但是,看起来如果我这样做,它也会删除所有只包含单词“Microsoft”的行。 – MisterPuggles

+0

“Microsoft P”只能在发布者列中找到? –

回答

5

可以导入,选择不含有 “微软P” 使用Where-Object中的所有元素,并出口:

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

这看起来像是“PowerShell”的走向。 –

2

您可以使用FINDSTR马克瑟特查建议。只需指出它是一个含有/C的文字搜索字符串。

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

感谢您的更正 - 我没有在Windows盒子前面测试它,这就是为什么我没有把它作为答案。有我的投票。 –

2

或者,如果你想要一个PowerShell的解决方案,你可以忽视这样一个事实,这是一个CSV,只是把它当作一个文本文件。然后,您可以:

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