none
PowerShell에서 Split, join RRS feed

답변




  • 안녕하십니까? 김도남 님

    Microsoft TechNet Forum 사이트를 방문해 주셔서 감사합니다.

     

    문의 하신 “PowerShell에서 Split, join”에 대한 답변을 드리겠습니다.

     

    Step 1 : Split

     

    PowerShell에서는 문자열을 특정 문자 기준으로 분리를 할 수 있습니다.

     

    아래의 Script는 기본 문자가 빈 공백임을 확인할 수 있습니다. 첫번째 함수는 ‘ ‘ 인자를 사용하고 두번 째 함수는 인자를 넣지 않은 경우 입니다. 아래의 그림을 보면 동일한 결과를 출력하는 것을 알 수 있습니다.

     

    $string = "one two three four"

    $string.Split(' ')

    Write-Host

    $string.Split()

     

     

     

    아래의 Script Text 파일에 저장되어 있는 문자열을 임의이 순서로 변경합니다. 배열 Index를 이용해서 분리된 문자열을 임의의 순서로 제 배열할 수 있습니다.

     

    Get-Content c:\NumberNote.txt | % { $data = $_.split(" "); Write-Output "$($data[1]) $($data[0]) , $($data[2])" }

     

     

     

     

    아래의 Script는 두번째 인자를 사용해서 분리되는 문자열의 개수를 제한할 수 있습니다. 아래의  Sciprt 3개까지 문자열로 분리를 합니다.

     

    개수

     

    "a,b,c,d", "e,f,g,h" -split ",",3

     

    a

    b

    c, d

     

    e

    f

    g,h

     

     

    아래의 Script는 세번째 인자에 multiline을 사용했을 경우 입니다.

     

    $a = '1The first line.     

    2The second line.  

    3The third of three lines.'

     

    $a -split "^\d"

     

    Write-Host

     

    $a -split "^\d", 0, "multiline"

     

     

     

     

     

    Step 2 : Join

     

    Join은 분리되어 있는 문자열을 인자로 사용된 문자를 사용해서 한 문자열로 작성을 합니다.

     

    아래의 Script‘ and a ‘ 문자를 이용해서 4개의 문자열을 한 문자열로 작성을 합니다.

     

    $bunchaStrings = 'one', 'two', 'three', 'four'

     

    [string]::join(' and a ', $bunchaStrings)

     

     

     

     

    아래의 Script IPv4, IPv6의 쌍을 ,(콤마)를 사용해서 한 문자열로 출력해서  사용자 가독성 향상 할 수 있습니다.

     

    (Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter 'IPEnabled=true' | Select-Object -ExpandProperty IPAddress) -join ', ',2

     

     

     

     

    참고 자료

     

    about_Split

    http://technet.microsoft.com/en-us/library/dd347708.aspx

     

    about_Join

    http://technet.microsoft.com/en-us/library/dd315375.aspx

     

     

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    • 답변으로 표시됨 김도남 2011년 11월 28일 월요일 오전 8:39
    2011년 11월 25일 금요일 오전 9:43
    중재자