Wednesday, February 07, 2007
Perl/펄] 텍스트 파일 각 행을, 랜덤하게 무작위로 뒤섞기; Text File Random-Shuffle Lines
텍스트 파일의 각 행들의 순서를 뒤죽박죽으로 섞는 방법입니다. Shuffle(셔플; 카드를 섞다)이라는 표현이 정확합니다.
펄의 기본 모듈에 포함되어 있는 shuffle 함수를 사용합니다. 리스트나 배열의 순서를 뒤섞는 함수입니다. 내장 함수는 아닙니다.
파일명: example.pl
(위의 코드 설명은 다음 게시물 참조: ▶▶ Perl/펄] 파일 끝에서부터 거꾸로 읽기; Text File Read Backward)
테스트용으로 쓸 텍스트 파일: test.txt
위의 파일의 라인 순서를 아무렇게나 섞어 보겠습니다.
실행 결과 화면:
각 행들이 랜덤하게 셔플되었습니다.
위의 출력 결과를 파일로 저장하려면
example.pl test.txt > out.txt
이렇게 재지향(Redirection)을 사용하면 됩니다.
▶▶ Perl/펄] 배열 요소 순서 랜덤하게 무작위로 뒤섞기; Array Random-Shuffle
펄의 기본 모듈에 포함되어 있는 shuffle 함수를 사용합니다. 리스트나 배열의 순서를 뒤섞는 함수입니다. 내장 함수는 아닙니다.
파일 행의 순서 섞기 예제
파일명: example.pl
#!/usr/bin/perl
use strict; use warnings;
use List::Util qw(shuffle);
my @a = <>;
chomp @a;
print "$_\n" foreach shuffle @a;
use strict; use warnings;
use List::Util qw(shuffle);
my @a = <>;
chomp @a;
print "$_\n" foreach shuffle @a;
(위의 코드 설명은 다음 게시물 참조: ▶▶ Perl/펄] 파일 끝에서부터 거꾸로 읽기; Text File Read Backward)
테스트용으로 쓸 텍스트 파일: test.txt
000
111
222
333
444
555
AAA
BBB
CCC
DDD
EEE
ZZZ
똠방각하
111
222
333
444
555
AAA
BBB
CCC
DDD
EEE
ZZZ
똠방각하
위의 파일의 라인 순서를 아무렇게나 섞어 보겠습니다.
실행 결과 화면:
D:\Z>example.pl test.txt
222
DDD
BBB
555
444
EEE
CCC
000
AAA
똠방각하
ZZZ
333
111
D:\Z>example.pl test.txt
444
BBB
DDD
555
000
CCC
333
222
AAA
111
똠방각하
EEE
ZZZ
D:\Z>example.pl test.txt
000
DDD
똠방각하
111
CCC
444
AAA
333
EEE
555
BBB
ZZZ
222
D:\Z>
222
DDD
BBB
555
444
EEE
CCC
000
AAA
똠방각하
ZZZ
333
111
D:\Z>example.pl test.txt
444
BBB
DDD
555
000
CCC
333
222
AAA
111
똠방각하
EEE
ZZZ
D:\Z>example.pl test.txt
000
DDD
똠방각하
111
CCC
444
AAA
333
EEE
555
BBB
ZZZ
222
D:\Z>
각 행들이 랜덤하게 셔플되었습니다.
위의 출력 결과를 파일로 저장하려면
example.pl test.txt > out.txt
이렇게 재지향(Redirection)을 사용하면 됩니다.
▶▶ Perl/펄] 배열 요소 순서 랜덤하게 무작위로 뒤섞기; Array Random-Shuffle
tag: perl
Perl | 펄
<< Home