ConvertFrom-String
문자열 콘텐츠에서 구조적 속성을 추출하고 구문 분석합니다.
구문
ConvertFrom-String
[-Delimiter <String>]
[-PropertyNames <String[]>]
[-InputObject] <String>
[<CommonParameters>]
ConvertFrom-String
[-TemplateFile <String[]>]
[-TemplateContent <String[]>]
[-IncludeExtent]
[-UpdateTemplate]
[-InputObject] <String>
[<CommonParameters>]
Description
ConvertFrom-String cmdlet은 문자열 콘텐츠에서 구조적 속성을 추출하고 구문 분석합니다. 이 cmdlet은 기존 텍스트 스트림에서 텍스트를 구문 분석하여 개체를 생성합니다. 파이프라인의 각 문자열에 대해 cmdlet은 구분 기호 또는 구문 분석 식을 통해 입력을 분할한 다음 결과 분할 요소 각각에 속성 이름을 할당합니다. 이러한 속성 이름을 제공할 수 있습니다. 그렇지 않으면 자동으로 생성됩니다.
byDelimiter
templateParsing
이 cmdlet은 기본으로 구분된 구문 분석과 자동으로 생성된 예제 기반 구문 분석의 두 가지 모드를 지원합니다.
기본적으로 구분된 구문 분석에서는 입력을 공백으로 분할하고 결과 그룹에 속성 이름을 할당합니다. ConvertFrom-String 결과를 Format-* cmdlet 중 하나로 파이핑하여 구분 기호를 사용자 지정하거나 구분 기호 매개 변수를 사용할 수 있습니다.
또한 이 cmdlet은 FlashExtract를 기반으로 자동으로 생성된 예제 기반 구문 분석, Microsoft Research연구 작업도 지원합니다.
예제
예제 1: 기본 속성 이름을 사용하여 개체 생성
PS C:\> "Hello World" | ConvertFrom-String
P1 P2
-- --
Hello World
PS C:\>
이 명령은 기본 속성 이름 P1 및 P2를 사용하여 개체를 생성합니다. 결과는 P1="Hello" 및 P2="World"입니다.
예제 1A: 생성된 개체 알아보기
PS C:\> "Hello World" | ConvertFrom-String | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
P1 NoteProperty string P1=Hello
P2 NoteProperty string P2=World
PS C:\>
이 명령은 P1, P2 속성으로 하나의 개체를 생성합니다. 두 속성 모두 기본적으로 'string' 형식입니다.
예제 2: 구분 기호를 사용하여 기본 속성 이름을 가진 개체 생성
PS C:\> "Hello World" | ConvertFrom-String -Delimiter "ll"
P1 P2
-- --
He o World
PS C:\>
이 명령은 Hello에서 'll'을 구분 기호로 지정하여 P1="He" 및 P2="o World" 속성을 사용하여 개체를 생성합니다.
예제 3: 두 개의 명명된 속성을 포함하는 개체 생성
PS C:\> "Hello World" | ConvertFrom-String -PropertyNames FirstWord, SecondWord
FirstWord SecondWord
--------- ----------
Hello World
PS C:\>
이 명령은 다음 두 가지 속성을 포함하는 개체를 생성합니다.
- "Hello" 값이 있는 firstWord
- "World" 값으로 SecondWord
예제 4: TemplateContent 매개 변수의 값으로 식을 사용하고 결과를 변수에 저장합니다.
$template = @'
{Name*:Phoebe Cat}, {phone:425-123-6789}, {age:6}
{Name*:Lucky Shot}, {phone:(206) 987-4321}, {age:12}
'@
$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111) 222-3333, 1
'@
$testText |
ConvertFrom-String -TemplateContent $template -OutVariable PersonalData |
Out-Null
Write-output ("Pet items found: " + ($PersonalData.Count))
$PersonalData
Pet items found: 4
Name phone age
---- ----- ---
Phoebe Cat 425-123-6789 6
Lucky Shot (206) 987-4321 12
Elephant Wise 425-888-7766 87
Wild Shrimp (111) 222-3333 1
C:\ >
이 명령은 식을 TemplateContent 매개 변수의 값으로 사용합니다.
식은 간단히 하기 위해 변수에 저장됩니다.
Windows PowerShell은 이제 파이프라인에서 ConvertFrom-String
- 이름
- 전화
- 연령
입력의 각 줄은 샘플 일치 항목에 의해 평가됩니다. 줄이 패턴에 지정된 예제와 일치하면 값이 추출되고 정의된 출력 변수에 전달됩니다.
$template샘플 데이터는 두 가지 전화 형식을 제공합니다.
- 425-123-6789
- (206) 987-4321
그리고 다음과 같은 두 가지 연령 형식이 있습니다.
- 6
- 12
이는 해당 패턴과 일치하는 샘플 데이터가 없기 때문에 (206) 987 4321 같은 휴대폰이 인식되지 않음을 의미합니다(세 자리 시퀀스와 4자리 시퀀스 사이에 하이픈이 없음). 3자리 이상의 나이와 비슷하게 인식되지 않습니다.
예제 5: 생성된 속성에 데이터 형식 지정
$template = @'
{[string]Name*:Phoebe Cat}, {[string]phone:425-123-6789}, {[int]age:6}
{[string]Name*:Lucky Shot}, {[string]phone:(206) 987-4321}, {[int]age:12}
'@
$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111) 222-3333, 1
'@
$testText |
ConvertFrom-String -TemplateContent $template -OutVariable PersonalData | Out-Null
Write-output ("Pet items found: " + ($PersonalData.Count))
$PersonalData
Pet items found: 4
Name phone age
---- ----- ---
Phoebe Cat 425-123-6789 6
Lucky Shot (206) 987-4321 12
Elephant Wise 425-888-7766 87
Wild Shrimp (111) 222-3333 1
C:\ >
위의 4번과 동일한 예입니다. 유일한 차이점은 원하는 각 속성에 대한 데이터 형식을 포함하는 패턴 문자열에 있습니다. 두 예제 간의 연령 열에 대한 맞춤의 차이를 확인합니다.
예제 5A: 생성된 개체 알아보기
$template = @'
{[string]Name*:Phoebe Cat}, {[string]phone:425-123-6789}, {[int]age:6}
{[string]Name*:Lucky Shot}, {[string]phone:(206) 987-4321}, {[int]age:12}
'@
$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111) 222-3333, 1
'@
$testText |
ConvertFrom-String -TemplateContent $template -OutVariable PersonalData |
Out-Null
$PersonalData | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
age NoteProperty int age=6
Name NoteProperty string Name=Phoebe Cat
phone NoteProperty string phone=425-123-6789
C:\ >
Get-Member 연령이 정수 형식임을 표시합니다.
매개 변수
-Delimiter
요소 간의 경계를 식별하는 정규식을 지정합니다. 분할에 의해 만들어진 요소는 결과 개체의 속성이 됩니다. 구분 기호는 궁극적으로 System.Text.RegularExpressions.RegularExpression.Split()를 호출하는 데 사용됩니다.
형식: | String |
별칭: | DEL |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-IncludeExtent
이 cmdlet에는 기본적으로 제거되는 익스텐트 텍스트 속성이 포함되어 있음을 나타냅니다.
형식: | SwitchParameter |
별칭: | IE |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-InputObject
파이프라인에서 받은 문자열 또는 문자열 개체를 포함하는 변수를 지정합니다.
형식: | String |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-PropertyNames
결과 개체에서 분할 값을 할당할 속성 이름의 배열을 지정합니다. 분할하거나 구문 분석하는 모든 텍스트 줄은 속성 값을 나타내는 요소를 생성합니다. 요소가 캡처 그룹의 결과이고 해당 캡처 그룹의 이름이 (?<name>)
또는 (?'name')
경우 해당 캡처 그룹의 이름이 속성에 할당됩니다.
PropertyName 배열에 요소를 제공하는 경우 해당 이름은 아직 이름이 지정되지 않은 속성에 할당됩니다.
필드보다 더 많은 속성 이름을 제공하는 경우 Windows PowerShell은 추가 속성 이름을 무시합니다. 모든 필드의 이름을 지정하기에 충분한 속성 이름을 지정하지 않으면 Windows PowerShell은 이름이 지정되지 않은 속성(P1, P2 등)에 숫자 속성 이름을 자동으로 할당합니다.
형식: | String[] |
별칭: | PN |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-TemplateContent
이 cmdlet이 문자열을 할당하는 속성을 설명하는 식 또는 변수로 저장된 식을 지정합니다. 템플릿 필드 사양의 구문은 {[optional-typecast]name(sequence-spec, 예: *):example-value}입니다. 예를 들어 {PersonInfo*:{Name:Patti Fuller}가 있습니다.
형식: | String[] |
별칭: | TC |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-TemplateFile
원하는 문자열 구문 분석용 템플릿을 포함하는 파일을 배열로 지정합니다. 템플릿 파일에서 속성 및 해당 값은 다음 예제와 같이 대괄호로 묶입니다. Name 속성 및 연결된 다른 속성과 같은 속성이 여러 번 나타나는 경우 별표(*)를 추가하여 여러 레코드가 발생함을 나타낼 수 있습니다. 이렇게 하면 여러 속성을 단일 레코드로 추출할 수 없습니다.
{Name*:D avid Chew}
{City:Redmond}, {State:WA}
{Name*:Evan Narvaez} {Name*:Antonio Moreno}
{City:Issaquah}, {State:WA}
형식: | String[] |
별칭: | TF |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-UpdateTemplate
이 cmdlet은 학습 알고리즘의 결과를 템플릿 파일의 주석에 저장한다는 것을 나타냅니다. 이렇게 하면 알고리즘 학습 프로세스가 더 빨라집니다. 이 매개 변수를 사용하려면 TemplateFile 매개 변수를 사용하여 템플릿 파일도 지정해야 합니다.
형식: | SwitchParameter |
별칭: | UT |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |