Powershell
2010. 12. 27.
안혁
http://hyok.kr


Powershell에서 특정 문자열에 +1한 느낌으로 변경하는 것은 어떻게 할까요? 질문이 이해가 안되시죠? "abcdefg"라는 문장이 있는경우, 이를 "bcdefgh"라는 문장으로 바꾸고 싶은 경우를 말하는 겁니다. 이런건 C언어같은 프로그래밍 언어를 처음 배울 때, 문자가 사실은 아스키 값이라는 숫자라는 것을 이해하기 위한 실습 문제 정도되겠습니다. a라는 문자의 아스키 값이 97이라면 b의 아스키 값은 98이라는 거죠. 문제를 이해했다면 Powershell에서 하는 방법을 보겠습니다.

[code]
[char[]]"abcde" | ForEach-Object { [char]([int]$_ + 1) }
[/code]

"abcde"라고 적으면 Powershell에서는 String 타입이 되죠? 이를 char 타입의 배열 그러니까 { a, b, c, d, e } 형태의 값으로 변경했습니다. 그리고 파이프(|)를 사용해서 뒤로 던졌죠? ForEach-Object가 받아서 사용합니다. ForEach-Object는 배열을 첫번째부터 끝까지 순서대로 가져오는 명령어 인데요. [char]($_-1)이라는 명령을 배열 개수(여기는 문자가 5개이니까 5번)만큼 실행됩니다. $_는 각 배열의 값으로 변경되어서요. 결국 위 명령은 다음 명령이랑 같은거죠.

[code]
[char]([int][char]"a" + 1);
[char]([int][char]"b" + 1);
[char]([int][char]"c" + 1);
[char]([int][char]"d" + 1);
[char]([int][char]"e" + 1);
[/code]

좀 더 복잡해진 것 같지만, 같은 일을 5번 한다는 거랑 위 명령과 같은 일을 하는 것을 이해하시면 되겠습니다. 문자열을 문자(char)로 봐꾸고 아스키 값(int)으로 바꾼 후 1을 더하고 다시 문자(char)으로 변경하는 것입니다.

사용자 삽입 이미지

Posted by 안혁 windfruit