항목
about_Split
간단한 설명
분할 연산자를 사용하여 하나 이상의 문자열을 하위 문자열로 분할하는 방법에 대해 설명합니다.
자세한 설명
분할 연산자는 하나 이상의 문자열을 하위 문자열로 분할합니다. 분할 연산의 다음 요소를 변경할 수 있습니다.
-- 구분 기호. 기본값은 공백이지만 구분 기호를 지정하는 문자, 문자열, 패턴 또는 스크립트 블록을 지정할 수
있습니다.
-- 하위 문자열의 최대 수. 기본값은 모든 하위 문자열을 반환하는 것입니다. 하위 문자열 수보다 작은 수를
지정하면 나머지 하위 문자열이 마지막 하위 문자열에서 연결됩니다.
-- 구분 기호가 일치하는 조건을 지정하는 옵션(예: SimpleMatch 및 Multiline)
구문
다음 다이어그램은 -split 연산자의 구문을 보여 줍니다.
매개 변수 이름은 명령에 표시되지 않고 매개 변수 값만 포함됩니다. 값은 구문 다이어그램에서 지정된 순서대로
나타나야 합니다.
-Split <String>
<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]
<String> -Split {<ScriptBlock>} [,<Max-substrings>]
모든 split 문에서 -split 대신에 -iSplit 또는 -cSplit을 사용할 수 있습니다. -iSplit 및 -split 연산자는
대/소문자를 구분하지 않습니다. -cSplit 연산자는 대/소문자를 구분하므로 구분 기호 규칙이 적용될 때 대/소문자가
고려됩니다.
매개 변수
<String>
분할할 하나 이상의 문자열을 지정합니다. 여러 문자열을 전송하는 경우 모든 문자열이 동일한 구분 기호 규칙을
사용하여 분할됩니다.
예제:
-split "red yellow blue green"
red
yellow
blue
green
<Delimiter>
하위 문자열의 끝을 식별하는 문자. 기본 구분 기호는 공백과 줄 바꿈(`n) 및 탭(`t)과 같은 인쇄할 수 없는
문자입니다. 문자열이 분할될 때 구분 기호는 모든 하위 문자열에서 생략됩니다. 예를 들면 다음과 같습니다.
"Lastname:FirstName:Address" -split ":"
Lastname
FirstName
Address
<Max-substrings>
반환된 하위 문자열의 최대 수를 지정합니다. 기본값은 모든 하위 문자열이 구분 기호로 분할되는 것입니다. 하위
문자열이 더 많으면 최종 하위 문자열에 연결되고, 하위 문자열이 더 적으면 모든 하위 문자열이 반환됩니다. 값
0과 음수는 모든 하위 문자열을 반환합니다.
둘 이상의 문자열(문자열 배열)을 분할 연산자에 전송하는 경우 Max-substrings 제한은 각 문자열에 개별적으로
적용됩니다. 예를 들면 다음과 같습니다.
$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" $c
-split ",", 5
Mercury
Venus
Earth
Mars
Jupiter,Saturn,Uranus,Neptune
<ScriptBlock>
구분 기호를 적용하기 위한 규칙을 지정하는 식입니다. 식은 $true 또는 $false로 평가되어야 합니다. 스크립트
블록은 중괄호로 묶으십시오. 예를 들면 다음과 같습니다.
$c = "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptu
ne" $c -split {$_ -eq "e" -or $_ -eq "p"}
M
rcury,V
nus,Earth,Mars,Ju
it
r,Saturn,Uranus,N
tun
<Options>
옵션 이름을 따옴표로 묶으십시오. Options는 <Max-substrings> 매개 변수가 문에서 사용되는
경우에만 유효합니다.
Options 매개 변수의 구문은 다음과 같습니다.
"SimpleMatch [,IgnoreCase]"
"[RegexMatch] [,IgnoreCase] [,CultureInvariant]
[,IgnorePatternWhitespace] [,ExplicitCapture]
[,Singleline | ,Multiline]"
SimpleMatch 옵션은 다음과 같습니다.
-- SimpleMatch: 구분 기호를 평가할 때 간단한 문자열 비교를 사용합니다. RegexMatch와
함께 사용할 수 없습니다.
-- IgnoreCase: -cSplit 연산자가 지정된 경우에도 대/소문자를 구분하지 않는 일치를 적용합니다.
RegexMatch 옵션은 다음과 같습니다.
-- RegexMatch: 구분 기호를 평가할 때 정규식 일치를 사용합니다. 이는 기본 동작이 아닙니다.
SimpleMatch와 함께 사용할 수 없습니다.
-- IgnoreCase: -cSplit 연산자가 지정된 경우에도 대/소문자를 구분하지 않는 일치를 적용합니다.
-- CultureInvariant: 구분 기호를 평가할 때 언어에서 문화권 차이를 무시합니다.
RegexMatch와 함께 사용하는 경우에만 유효합니다.
-- IgnorePatternWhitespace: 이스케이프되지 않은 공백과 숫자 기호(#)로 표시된
주석을 무시합니다. RegexMatch와 함께 사용하는 경우에만 유효합니다.
-- Multiline: Multiline 모드는 줄과 문자열의 시작 및 끝을 인식합니다.
RegexMatch와 함께 사용하는 경우에만 유효합니다. 기본값은 Singleline입니다.
-- Singleline: Singleline 모드는 문자열의 시작 및 끝만 인식합니다.
RegexMatch와 함께 사용하는 경우에만 유효합니다. 기본값은 Singleline입니다.
-- ExplicitCapture: 명시적 캡처 그룹만 결과 목록으로 반환되도록 명명되지 않은 일치 그룹을
무시합니다. RegexMatch와 함께 사용하는 경우에만 유효합니다.
단항 및 이항 분할 연산자
단항 분할 연산자(-split <string>)는 쉼표보다 우선 순위가 높습니다. 따라서 쉼표로 구분된 문자열
목록을 단항 분할 연산자로 전송하면 첫 번째 쉼표 앞에 있는 첫 번째 문자열만 분할됩니다.
둘 이상의 문자열을 분할하려면 이항 분할 연산자를 사용합니다(<string> -split <delimiter>).
모든 문자열을 괄호로 묶거나 문자열을 변수에 저장한 다음 변수를 분할 연산자로 전송합니다.
다음 예를 살펴 보십시오.
-split "1 2", "a b"
1
2
a b
"1 2", "a b" -split " "
1
2
a
b
-split ("1 2", "a b")
1
2
a
b
$a = "1 2", "a b"
-split $a
1
2
a
b
예제
다음 문은 공백에서 문자열을 분할합니다.
C:\PS> -split "Windows PowerShell 2.0`nWindows PowerShell with remoting"
Windows
PowerShell
2.0
Windows
PowerShell
with
remoting
다음 문은 모든 쉼표에서 문자열을 분할합니다.
C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split ','
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
다음 문은 패턴 "er"에서 문자열을 분할합니다.
C:\PS>"Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split 'er'
M
cury,Venus,Earth,Mars,Jupit
,Saturn,Uranus,Neptune
다음 문은 문자 "N"에서 대/소문자를 구분하는 분할을 수행합니다.
C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -cSplit 'N'
Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,
eptune
다음 문은 "e" 및 "t"에서 문자열을 분할합니다.
C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[et]'
M
rcury,V
nus,
ar
h,Mars,Jupi
r,Sa
urn,Uranus,N
p
un
다음 문은 "e" 및 "r"에서 문자열을 분할하지만 결과 하위 문자열을 6개의 하위 문자열로 제한합니다.
C:\PS> "Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune" -split '[er]', 6
M
cu
y,V
nus,
arth,Mars,Jupiter,Saturn,Uranus,Neptune
다음 문은 문자열을 3개의 하위 문자열로 분할합니다.
C:\PS> "a,b,c,d,e,f,g,h" -split ",", 3
a
b
c,d,e,f,g,h
다음 문은 두 문자열을 3개의 하위 문자열로 분할합니다. 제한이 각 문자열에 독립적으로 적용됩니다.
C:\PS> "a,b,c,d", "e,f,g,h" -split ",", 3
a
b
c,d
e
f
g,h
다음 문은 첫 숫자에서 here-string의 각 줄을 분할하며, Multiline 옵션을 사용하여 각 줄과 문자열의
시작을 인식합니다.
0은 Max-substrings 매개 변수의 "return all" 값을 나타냅니다. Max-substrings 값이 지정된 경우에만
Multiline과 같은 옵션을 사용할 수 있습니다.
C:\PS> $a = @'
1The first line.
2The second line.
3The third of three lines.
'@
C:\PS> $a -split "^\d", 0, "multiline"
The first line.
The second line.
The third of three lines.
다음 문은 SimpleMatch 옵션을 사용하여 점(.) 구분 기호를 문자 그대로 해석하도록 -split 연산자에
지시합니다.
기본값 RegexMatch를 사용하는 경우 따옴표로 묶인 점(".")은 줄 바꿈 문자를 제외한 모든 문자와 일치하는
것으로 해석됩니다. 따라서 split 문은 줄 바꿈을 제외한 모든 문자에 대해 빈 줄을 반환합니다.
0은 Max-substrings 매개 변수의 "return all" 값을 나타냅니다. Max-substrings 값이 지정된 경우에만
SimpleMatch와 같은 옵션을 사용할 수 있습니다.
C:\PS> "This.is.a.test" -split ".", 0, "simplematch"
This
is
a
test
다음 문은 변수의 값에 따라 두 구분 기호 중 하나에서 문자열을 분할합니다.
C:\PS> $i = 1
C:\PS> $c = "LastName, FirstName; Address, City, State, Zip"
C:\PS> $c -split {if ($i -lt 1) {$_ -eq ","} else {$_ -eq ";"}}
LastName, FirstName
Address, City, State, Zip
다음 split 문은 XML 파일을 꺾쇠 괄호에서 먼저 분할한 다음 세미콜론에서 분할합니다. 결과는 읽을 수
있는 버전의 XML 파일입니다.
C:\PS> get-process powershell | export-clixml ps.xml
C:\PS> $x = import-clixml ps.xml
C:\PS> $x = $x -split "<"
C:\PS> $x = $x -split ";"
결과를 표시하려면 "$x"를 입력하십시오.
C:\PS> $x
@{__NounName=Process
Name=powershell
Handles=428
VM=150081536
WS=34840576
PM=36253696
...
참고 항목
Split-Path
about_Operators
about_Comparison_Operators
about_Join
about_PowerShell_v2