about_Split

업데이트 날짜: 2014년 12월

적용 대상: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0

항목

about_Split

간단한 설명

Split 연산자를 사용하여 하나 이상의 문자열을 하위 문자열로 분할하는 방법을 설명합니다.

자세한 설명

Split 연산자는 하나 이상의 문자열을 하위 문자열로 분할합니다. Split 연산자의 다음과 같은 요소를 변경할 수 있습니다.

  • -- 구분 기호. 기본값은 공백이지만, 문자, 문자열, 패턴 또는 구분 기호를 지정하는 스크립트 블록을 지정할 수 있습니다. Windows PowerShell®의 Split 연산자는 간단한 문자가 아닌 구분 기호의 정규식을 사용합니다.

  • -- 최대 하위 문자열 수. 기본값은 모든 하위 문자열을 반환합니다. 하위 문자열 수보다 작은 수를 지정하면 나머지 하위 문자열은 마지막 하위 문자열에 연결됩니다.

  • -- SimpleMatch 및 Multiline 등 구분 기호가 일치하는 조건을 지정하는 옵션.

구문

다음 다이어그램은 -split 연산자 구문을 보여줍니다.

매개 변수 이름은 명령에 나타나지 않습니다. 매개 변수 값만 포함합니다. 값은 구문 다이어그램에서 지정된 순서대로 나타나야 합니다.

-Split <String>

<String> -Split <Delimiter>[,<Max-substrings>[,"<Options>"]]

<String> -Split {<ScriptBlock>} [,<Max-substrings>]

이진 Split 문(구분 기호 또는 스크립트 블록을 포함하는 Split 문)에서 -split 대신 -iSplit 또는 -cSplit으로 대체할 수 있습니다. -iSplit 및 -split 연산자는 대/소문자를 구분합니다. -cSplit 연산자는 대/소문자를 구분하며, 이는 구분 기호 규칙을 적용할 때 대/소문자를 고려하라는 의미입니다.

매개 변수

  • <문자열>
    분할할 하나 이상의 문자열을 지정합니다. 여러 문자열을 전송하는 경우, 모든 문자열은 동일한 구분 기호 규칙으로 분할됩니다. 예:

              -split "red yellow blue green"
              red
              yellow
              blue
              green
    
  • <Delimiter>
    하위 문자열 끝을 식별하는 문자 기본 구분 기호는 공백이며, 스페이스와 줄 바꿈 문자(`n) 및 탭(`t) 등 인쇄할 수 없는 문자도 포함됩니다. 문자열이 분할되면 구분 기호는 모든 하위 문자열에서 생략됩니다. 예:

              "Lastname:FirstName:Address" -split ":"
              Lastname
              FirstName
              Address
    

    기본적으로 구분 기호는 결과에서 생략됩니다. 모든 구분 기호 또는 일부를 보존하려면 보존하려는 부분을 괄호로 묶습니다. <Max-substrings> 매개 변수가 추가되면 명령이 컬렉션을 분할할 때 이것이 우선합니다. 출력의 일부로 구분 기호를 포함하기로 한 경우 명령은 출력의 일부로서 구분 기호를 반환하지만, 출력의 일부로서 구분 기호를 반환하기 위한 문자열 분할은 분할로 간주되지 않습니다. 예:

              "Lastname:FirstName:Address" -split "(:)"
              Lastname
              :
              FirstName
              :
              Address    
    
    
              "Lastname/:/FirstName/:/Address" -split "/(:)/"
              Lastname
              :
              FirstName
              :    
              Address
    

    다음 예에서 <Max-substrings>는 3에 설정됩니다. 이는 문자열 값을 세 개로 분할하지만, 결과 출력에는 총 다섯 개의 문자열이 나타납니다. 최대 세 개의 문자열에 도달할 때까지 분할 다음에 구분 기호가 포함됩니다. 마지막 하위 문자열에 추가된 구분 기호는 하위 문자열의 일부가 됩니다.

             'Chocolate-Vanilla-Strawberry-Blueberry' -split '(-)', 3;
    
             Chocolate
             -
             Vanilla
             -
             Strawberry-Blueberry
    
  • <Max-substrings>
    문자열이 분할되는 최대 수를 지정합니다. 기본값은 구분 기호로 분할된 모든 문자열입니다. 하위 문자열이 이보다 많으면 이들 문자열은 마지막 하위 문자열에 연결됩니다. 하위 문자열이 이보다 부족하면 모든 하위 문자열이 반환됩니다. 값이 0이거나 음수인 경우 모든 하위 문자열을 반환합니다.

    Max-substrings는 반환되는 최대 개체 수를 지정하지 않습니다. 이 값은 문자열이 분할되는 최대 수와 동일합니다. 하나 이상의 문자열(문자열 배열)을 Split 연산자에 전송하는 경우 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,Neptune"
              $c -split {$_ -eq "e" -or $_ -eq "p"}
              M
              rcury,V
              nus,Earth,Mars,Ju
              it
              r,Saturn,Uranus,N
    
              tun
    
  • <옵션>
    옵션 이름은 따옴표로 묶으세요. 옵션은 <Max-substrings> 매개 변수가 문에서 사용될 때만 유효합니다.

    Options 매개 변수의 구문은 다음과 같습니다.

        "SimpleMatch [,IgnoreCase]"
    
                "[RegexMatch] [,IgnoreCase] [,CultureInvariant]
                [,IgnorePatternWhitespace] [,ExplicitCapture] 
                [,Singleline | ,Multiline]"
    

    SimpleMatch 옵션은 다음과 같습니다.

    • -- SimpleMatch: 구분 기호를 평가할 때 간단한 문자열 비교를 사용합니다. RegexMatch와 함께 사용할 수 없습니다.

    • -- IgnoreCase: -cSplit 연산자를 지정하더라도 대/소문자를 구분하지 않고 일치시킵니다.

    RegexMatch 옵션은 다음과 같습니다.

    1. -- RegexMatch: 정규식 일치를 사용하여 구분 기호를 평가합니다. 이는 기본 동작입니다. SimpleMatch와 함께 사용할 수 없습니다.

    2. -- IgnoreCase: -cSplit 연산자를 지정하더라도 대/소문자를 구분하지 않고 일치시킵니다.

    3. -- CultureInvariant: 구분 기호를 평가할 때 언어의 차이를 무시합니다. RegexMatch와 함께 사용하는 경우에만 유효합니다.

    4. -- IgnorePatternWhitespace: 이스케이프된 공백과 숫자 기호(#)가 표시된 주석을 무시합니다. RegexMatch와 함께 사용하는 경우에만 유효합니다.

    5. -- Multiline: Multiline 모드는 줄과 문자열의 시작과 끝을 인식합니다. RegexMatch와 함께 사용하는 경우에만 유효합니다. Singleline이 기본값입니다.

    6. -- Singleline: Singleline 모드는 문자열의 시작과 끝만 인식합니다. RegexMatch와 함께 사용하는 경우에만 유효합니다. Singleline이 기본값입니다.

    7. -- 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

다음 문은 한 개의 문자열을 세 개의 하위 문자열로 분할합니다.

        C:\PS> "a,b,c,d,e,f,g,h" -split ",", 3

        a
        b
        c,d,e,f,g,h

다음 문은 두 개의 문자열을 세 개의 하위 문자열로 분할합니다. (제한은 각 문자열에 따로따로 적용됩니다.)

        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 매개 변수의 "모두 반환" 값을 나타냅니다. Multiline와 같은 옵션은 Max-substrings 값이 지정된 경우에만 사용할 수 있습니다.

        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 매개 변수의 "모두 반환" 값을 나타냅니다. SimpleMatch와 같은 옵션은 Max-substrings 값이 지정된 경우에만 사용할 수 있습니다.

        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

다음 분할 문은 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