programing

'Match' cmdlet을 사용하여 PowerShell에서 문자열 배열(또는 목록)을 필터링하려면 어떻게 해야 합니까?

lastmoon 2023. 8. 20. 12:26
반응형

'Match' cmdlet을 사용하여 PowerShell에서 문자열 배열(또는 목록)을 필터링하려면 어떻게 해야 합니까?

CSV 파일을 필터링하려고 합니다.하지만 다음 스크립트는 오류를 주고 있습니다.각 String 개체에 대해 일치를 실행하려면 어떻게 지정해야 합니까?

저는 여러 가지 조합을 시도해 보았지만, 결과는 없었습니다.

$FileNames = [System.IO.Directory]::GetFiles("C:\Users\anagre\Desktop")

$FileNames = $FileNames | Where { -match "*.csv"}

사용해 보십시오.

$FileNames = Get-ChildItem -Path "C:\Users\anagre\Desktop" -Filter *.csv

위 코드에서 $PSItem($_)을 사용하지 않았습니다.where조항, 그리고 만약 당신이 와일드차를 사용하고 싶다면 당신은 그것을 사용해야 합니다.-like연산자:

$FileNames|where{$_ -like "*.csv"}

또는

$FileNames|where{$_ -match ".csv"}

-match 연산자는 입력 개체에 따라 비교 연산자이자 배열 연산자입니다.

스칼라인 경우 부울을 반환합니다.배열인 경우 패턴과 일치하는 배열의 모든 요소를 반환합니다.

@($Filenames) -match '*.csv'

어레이 구문을 사용하여 반환된 파일 이름이 하나뿐인 경우에도 어레이를 계속 사용할 수 있습니다.Get-ChildItem그렇지 않으면, 당신은 돌아올 것입니다.$True일치하는 경우 파일 이름 대신 사용합니다.

이 작업을 수행하기 위해 찾은 가장 간단한(그리고 가장 깔끔한) 방법은 다음과 같습니다.

$filename.where{$_ -match '.csv'}

또는 해시 테이블의 지정된 열 내에서만 검색합니다.

$filename.where{$_.location -match '.csv'}

그런 다음 필요한 부분만 얻으십시오.

$filename.where{$_.location -match '.csv'} | select User,Filename,Filetype

기타

언급URL : https://stackoverflow.com/questions/14172574/how-do-i-filter-a-string-array-or-list-in-powershell-using-the-match-cmdlet

반응형