2016-09-15 2 views
2

"이름"과 "정보"라는 몇 개의 행과 두 개의 열이있는 CSV가 있습니다.CSV에서 한 줄 제거하기

나는 조건이 충족되는 경우 내가 줄을 제거하고 싶습니다의 CSV 통해 반복과 조건에 대한 각 라인을 확인하고 있습니다 :

for ($i=0; $i -le $CSV.length; $i++) 
{    
    if ($CSV.name == "Fred") 
    { 
     #remove $CSV[$i] -- that one line; both "Name" and "Information" 
    } 
} 

내가 사용하는 솔루션을 본 적이 Get-Content 또는 Import-Csv 및 임시 파일 (들)하지만 난 그것 주위에 내 머리를 싸서하지 않은 쉬운 방법이 있어야합니다 그림.

아무런 도움이 필요하지 않습니다.

답변

4

Import-CSV cmdlet을 사용하여 CSV를 읽고 Where-Object cmdlet을 사용하여 항목을 필터링합니다.

$csv = import-csv 'YourPath.csv' 
$csv | Where Name -ne 'Fred' | Export-Csv 'YourPath.csv' -NoTypeInformation 
+1

좋은 접근 방식을, 그러나 나는이 대답이 완전히 읽기 전에 파일'YourPath.csv'을 덮어 쓸 위험 두려워 : 마지막으로, 다시 Export-CSV cmdlet을 사용하여 CSV를 작성합니다. 새로운 파일에 저장하거나 쓰기 전에 변수를 읽어야합니다. –

+0

@ Burt_Harris 네 말이 맞아. 나는 내 대본을 채택 할 것이다. –

+3

temp 변수로 일부 우아함을 잃어 버립니다. 한 줄로 만드는 또 다른 방법은 import-csv를 괄호 안에 넣는 것입니다 (예 :'(import-csv. \ test.csv) | 여기서 Name -ne 'Fred'| export-csv test.csv -NoTypeInformation' –