2015-01-14 2 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 "Microsoft P" SomeFile.CSV> NewFile.CSV' –

+0

Это чувствует боли просто, и я не знаю, как я пропустил это. Однако кажется, что если я это сделаю, он также удалит все строки с помощью только слова «Microsoft». – MisterPuggles

+0

«Microsoft P» можно найти только в столбце издателя? –

ответ

5

Вы можете импортировать, выбрать все элементы, не содержащие "Microsoft P" с помощью Where-Object и экспорт:

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

Это похоже на путь «PowerShell». –

2

Вы можете использовать FINDSTR как предлагает Марк Setchell. Просто укажите, что это буквальная строка поиска с /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 
Смежные вопросы