about_Join — PowerShell의 -join 연산자
about_Join — PowerShell의 -join 연산자
문자열 여러 개를 하나로 이어 붙이고 싶을 때가 있죠. 배열로 묶인 이름들을 한 줄로, 여러 줄을 한 줄로 만들고 싶을 때 PowerShell이 제공하는 도구가 있는데, 바로 -join 연산자예요. 여러 문자열을 받아 순서대로 이어서 하나의 문자열로 만들어 줍니다.
본문
-join이 하는 일
-join 연산자는 문자열 묶음(배열)을 받아 하나의 문자열로 이어 붙여요. 이어 붙일 때의 순서는 명령에 적어준 순서 그대로예요. 앞에 있는 문자열부터 차례로 결과 문자열에 붙는다고 보면 돼요.
문법
-join 연산자의 문법은 두 가지 형태가 있어요.
-join <String[]>
<String[]> -join <Delimiter>
첫 번째는 단항(unary) 형태로, 배열 전체를 기본 구분자로 이어 붙여요. 두 번째는 배열과 구분자를 -join 양쪽에 두고, 그 사이에 들어갈 구분자를 지정하는 형태예요.
매개변수
| 매개변수 | 설명 |
|---|---|
String[] |
이어 붙일 문자열을 하나 이상 지정해요. |
Delimiter |
이어 붙인 문자열 사이에 넣을 문자를 하나 이상 지정해요. 기본값은 구분자 없음("")이에요. |
단항 -join을 쓸 때 주의할 점
단항 -join 연산자(-join <string[]>)는 쉼표보다 우선순위가 높아요. 그래서 문자열을 쉼표로 구분해 그대로 넘기면, 첫 번째 쉼표 앞의 첫 번째 문자열만 join에 전달돼요. 배열 전체를 이어 붙이려면 문자열을 괄호로 감싸거나, 변수에 담아서 그 변수를 넘겨주면 돼요.
예시로 볼게요.
-join "a", "b", "c"
a
b
c
-join ("a", "b", "c")
abc
$z = "a", "b", "c"
-join $z
abc
-join "a", "b", "c"는 예상과 다르게 a 하나만 처리돼서 그대로 a가 나오죠. 반면 괄호로 감싼 -join ("a", "b", "c")는 세 문자열이 그대로 붙어 abc가 돼요. 변수에 담은 경우도 배열 전체가 전달되니 결과는 abc예요.
실제 예시로 익혀보기
이번엔 조금 더 실용적인 예시를 볼게요. 세 문자열을 그대로 이어 붙이면:
-join ("Windows", "PowerShell", "2.0")
WindowsPowerShell2.0
구분자를 지정하면 그 사이에 공백이 들어가요.
"Windows", "PowerShell", "2.0" -join " "
Windows PowerShell 2.0
구분자는 여러 글자도 쓸 수 있어요. 아래는 "OW"라는 두 글자 구분자로 세 문자열을 이어 붙인 예시예요.
$a = "WIND", "S P", "ERSHELL"
$a -join "OW"
WINDOWS POWERSHELL
WIND + OW + S P + OW + ERSHELL이 이어지면서 WINDOWS POWERSHELL이 되는 걸 확인할 수 있어요.
마지막으로, here-string(여러 줄 문자열)을 한 줄로 합치는 예시를 볼게요. here-string 자체는 문자열 하나라서, 줄들을 이어 붙이려면 먼저 줄 단위로 쪼갠 뒤 다시 join해야 해요. XML 파일을 here-string에 담아 보관했을 때 그 내용을 다시 한 줄로 되살리는 데 이 방법을 쓸 수 있어요.
$a = @'
a
b
c
'@
(-split $a) -join " "
a b c
(-split $a)로 줄 단위로 쪼갠 다음 -join " "로 공백을 사이에 두고 다시 이어 붙였네요. 결과는 a b c가 돼요.
더 알아보기
- about_Operators — PowerShell 연산자 전반 정리
- about_Comparison_Operators — 비교 연산자 정리
- about_Split — 문자열을 쪼개는
-split연산자