2017-12-04 7 views
0
내가 PowerShell을 초보자 나처럼

, 나는 일을 많이 시도하지만, 내가 도움이 정말 필요가 있다고 생각 ... 여기 파워 쉘 - 라인의 필터 범위를 CSV

내 문제입니다 : PowerShell에서 필터링되지 않은 라인을 출력하기 위해 CSV 파일의 라인 범위를 필터링하고 싶습니다. 또한, 나는 "5"라는 번호를 가진 라인을 처음부터 필터링하려고합니다. 나는 그런 PowerShell을 출력을 "5"로 시작하는 줄을 필터링하고 갖고 싶어,

FirstName  Name  PhoneNumber 
A    AA   3366 
B    BA   3356 
C    CC   5898 
D    DC   5316 
E    EH   5623 
F    FB   5963 

을 여기에 : 나는 파워 쉘 명령을 수행 할 때 다음

은 CSV 예제 파일입니다

$i = "C:\my_csv_file.csv" 
$colonne = "First Name" , "Name" , "PhoneNumber" 
$test = Import-Csv -Encoding Default $i -Delimiter ";" | Select $colonne 
echo $test 
,369 : 여기
FirstName  Name  PhoneNumber 
A    AA   3366 
B    BA   3356 

내 파워 쉘 코드

필자는 필터를 사용하기 위해 "if"명령을 사용하는 것이 좋다고 생각합니다.

사실 저는 몇 가지 인수로 "if"를 많이 시도했지만 아무런 효과가 없습니다!

당신이 나를 도울 수 있기를 바랍니다!

나쁜 영어로 죄송합니다. 가능한 한 더 잘 쓸려고했습니다.

$i = 'C:\my_csv_file.csv' 
$colonne = @('First Name', 'Name', 'PhoneNumber') 
$test = Import-Csv -Path $i -Encoding Default -Delimiter ';' | 
    Where-Object { $_.PhoneNumber -notmatch '^5' } | 
    Select-Object -Property $colonne 
$test 

이 (Where-Object) 재산 볼 것이다 : 당신이 뭔가를 이해하지 않으면이 당신의 PhoneNumber 속성을 필터링하는 정규식을 사용합니다

+0

을보십시오. – EBGreen

+0

@EBGreen 전화 번호 필드의 시작 부분에 있습니다. – TheIncorrigible1

+0

Aaah ... 나는 필터의 방향을 잘못 이해했다. 나는 분명히 더 많이 깨울 필요가있다. – EBGreen

답변

0

내가 예에서 라인의 시작 부분에 숫자 5가 표시되지 않습니다이

$i = 'C:\my_csv_file.csv' 
$colonne = @('First Name', 'Name', 'PhoneNumber') 
$test = Import-Csv -Path $i -Encoding Default -Delimiter ';' | 
Where-Object { $_.PhoneNumber -notlike '5*' } | 
Select-Object -Property $colonne 
$test 
+0

고마워요! 그것은 나의 하루를 만들었다! – Pieo

+0

문제 없습니다. :). –

1

이상을 주장 할 수있는 즐거움이 될 것입니다 말해 최종 결과에서 5로 시작하는 전화 번호를 제거하십시오.

-1

동일한 데이터와 스크립트에 다른 열 이름 (파일에는 공백이 포함되지 않음)이 있습니다. 이 시도 :

$Path = "C:\my_csv_file.csv" 
$Filter = { $_.PhoneNumber -notmatch '^5' } 
$Columns = "FirstName", "Name", "PhoneNumber" 
$FilteredData = Import-Csv -Path $Path -Encoding Default -Delimiter ";" |? $Filter | Select $Columns 
$FilteredData | Format-Table -AutoSize -Wrap | Out-Host