PowerShell에서 부분 문자열 검색: 빠른 안내

A common scenario in an admin’s world is to figure out a way to find a certain snippet of text inside a string; called the substring. PowerShell makes finding a substring extremely easy.

관련 정보: 문자열 형식 및 문자열 확장 배우기

무료 라이브 트레이닝 발표 – PowerShell 여행 시작하기 – Johan Arwidmark가 제시하는 내용입니다. PowerShell 기술이 IT 경력을 향상시키는 방법을 이해하고 PowerShell로 시작하는 위치, 첫 번째 스크립트 작성, 그리고 라이브 트레이닝 환경에서 질문하기까지 배울 수 있습니다.

PowerShell과 문자열

PowerShell 세계에서 문자열은 따옴표로 둘러싸인 문자의 집합으로 구성됩니다. "foo"'bar'와 같은 문자열은 매우 일반적입니다.

관련 정보: 기초로 돌아가기: PowerShell 문자열

변수에 문자열을 정의했고 그 중 일부만 찾아야 하는 경우는 어떨까요? 예를 들어 주소가 1234 4번가인 문자열이 있다고 가정해 보겠습니다. 숫자를 뽑아내고 항상 처음 네 글자가 필요한 숫자임을 알고 싶을 것입니다. 이 경우 PowerShell substring() 메서드를 사용할 수 있습니다.

PowerShell SubString 메서드 사용

PowerShell에서 문자열 내에서 문자열을 찾으려면 Substring() 메서드를 사용할 수 있습니다. 이 메서드는 PowerShell의 모든 문자열 객체에서 찾을 수 있습니다.

예를 들어, 아마도 The quick brown fox jumped over the fence.와 같은 문자열이 있을 수 있습니다. 처음 다섯 글자를 찾고 싶을 것입니다. Substring() 메서드를 사용하여 다음과 같이 수행할 수 있습니다:

$string = 'The quick brown fox jumped over the fence.'
$string.Substring(0,5)

Substring() 메서드에 전달할 첫 번째 인수는 가장 왼쪽 문자의 위치입니다. 이 경우, 가장 왼쪽 문자는 T입니다. 두 번째 인수는 가장 오른쪽 문자의 위치입니다. 이 경우, 문자는 q입니다.

Substring() 메서드는 그 사이의 모든 문자를 반환합니다.

다음은 실제 예시입니다:

다음과 같은 형식을 갖는 제품 코드가 있는 경우를 가정해 보겠습니다: XXXXVVVV-MM-DD-YYYY. 모든 제품은 이 코드 형식을 갖고 있으며 이 형식에서 벗어나지 않습니다. 이제 이 코드를 생성한 재고 관리 소프트웨어가 데이터베이스에 생성된 날짜 필드를 포함하지 않았다고 가정해 보겠습니다.

그러나 소프트웨어는 항상 제품 코드 자체에 MM-DD-YYYY로 이 날짜를 포함했으므로 우리는 이를 제품 코드에서 추론할 수 있습니다. 각 제품이 데이터베이스에 삽입된 날짜를 보여주기 위해 몇 가지 매우 불필요한 보고서를 관리에 표시해야 합니다. 이를 해결하는 좋은 방법은 다음과 같습니다.

$product_code = 'ABCD1234-11-12-2013'
$date_created = [DateTime]$product_code.SubString($product_code.Length-10)

이 예에서는 PowerShell의 SubString() 메서드를 내재된 문자열 객체에 사용하고 찾고자 하는 첫 번째 문자의 번호를 매개변수로 전달합니다.

자 정지 문자를 명시하지 않았으므로 문자열 끝까지 모든 문자를 원한다고 가정합니다. 첫 번째 위치에서 숫자를 찾기 위해 전체 제품 코드의 길이를 먼저 얻은 다음 그것에서 단순히 10을 빼는 것으로 시작합니다. 이 예에서는 문자열의 오른쪽에서 10 번째 문자부터 시작하고 그 오른쪽의 모든 것을 원한다는 것을 의미합니다.

The [DateTime] 형식은 게시물의 부분 문자열 주제와 반드시 관련이 없지만 특정 예제와 잘 어울릴 것 같습니다.

문자열 “11-12-2013″을 얻은 후에는 이를 [DateTime] 개체로 형변환하여 한 번은 어리석은 문자열이었던 것을 멋진 객체로 변환합니다. 여기서 우리는 이 객체에 대해 관리가 원하는 모든 멋진 날짜 산술을 수행하고 멋진 막대 차트 보고서를 생성할 수 있습니다!

길이 속성을 사용하여 부분 문자열을 동적으로 찾기

위의 예에서는 문자열 내의 문자의 시작 및 끝 위치를 정적으로 정의했습니다. 그러나 마지막 위치를 모를 경우 어떻게 될까요?

어쩌면 마지막 네 문자에서 부분 문자열을 찾아야 할 수 있습니다. 마지막 위치에서부터 시작하여 끝까지의 네 번째 위치에서 문자 세트를 찾아야 합니다. 검색 중인 문자열의 길이는 어떤 길이든 될 수 있습니다.

왼쪽에서 세는 양수로 끝 위치를 정의하는 대신 문자열의 길이를 사용하고 그 중 일정 수의 문자를 빼서 끝 위치를 동적으로 지정할 수 있습니다.

사용한 문자열 `$product_code = 'ABCD1234-11-12-2013'`을 통해 마지막 네 글자를 찾고 싶을 수 있습니다. 다음과 같이하는 대신:

PS> $product_code = 'ABCD1234-11-12-2013'
PS> $product_code.SubString(0,4)
ABCD

`0`을 `$product_code.Length - 4`로 대체할 수 있으며 끝 위치를 전혀 사용하지 않아도 마지막 네 글자를 반환합니다.

PS> $product_code = 'ABCD1234-11-12-2013'
PS> $product_code.SubString($product_code.Length-4)
2013

끝 위치를 지정하지 않으면 PowerShell substring 메서드가 항상 마지막 문자 위치로 기본 설정됩니다.

문자열의 length 속성을 사용하여 문자열의 총 문자 수를 뺀 다음 해당 수를 사용하여 부분 문자열을 동적으로 선택할 수 있습니다.

무료 라이브 트레이닝을 소개합니다 – PowerShell 여정 시작 – Johan Arwidmark가 제공합니다. PowerShell 기술이 IT 커리어를 어떻게 향상시키는지 이해하고 PowerShell로 시작하는 방법, 첫 번째 스크립트를 작성하고 Johan에게 라이브 트레이닝 환경에서 직접 질문할 수 있습니다.

Source:
https://adamtheautomator.com/powershell-substring/