Engineering/Etc
대용량 텍스트 파일 내용 변경하기
부스 boos
2012. 4. 19. 17:35
728x90
텍스트 파일 내용중에 일부를 다른 문자열로 치환하기 위해 sed 로 실행해보았다.
텍스트 파일은 12 GB 정도, 서버 : CPU Intel Xeon 2.6 GHz, RAM 4GB
# sed 's/AAA/BBB/g' text > conv_text
실행시간 : 대략 20분에서 30분에서 작업이 종료.
-> sed 자체에서 변경하는 부분이 문제일 수도 있지만, redirect 로 다른 파일로 저장하는 것도 실행 시간에 문제가 되었을 것이다.
perl 을 사용해서 동일한 작업을 수행했다.
# time perl -pe 's/AAA/BBB/g' text
real 6m51.624s
user 1m3.129s
sys 0m42.110s
-> 대략 6,7분 사이에 완료되었다. 백업파일 옵션을 안줘서 그런가해서 다시한번 테스트 해보았다.
# time perl -ibak -pe 's/AAA/BBB/g' text
real 6m45.249s
user 1m4.498s
sys 0m42.332s
-> 시간이 더 적게 나온거는 오차가 있겠지만, "text.bak" 원본파일도 같이 생성되어도 작업이 6,7 분에 완료되었다.
perl 이 대용량 파일처리에 우수하다는 얘기는 들어보았지만 실제 사용하기는 처음인데, 이런 차이가 있을 줄은 몰랐다. perl 을 사용해서 파일 처리 테스트를 많이 적용해 보아야 겠다.
참고 :