perl을 사용하여 파일의 문자열 전부 치환하기
글쓴이: 멀뚱이 / 작성시간: 일, 2008/05/25 - 2:55오전
아래는 bom 파일의 내용입니다:
가나다라마바사
가나다라마바사
가나다라마바사
가나다라마바사
아자차카타파하
123512346가나다라마바사묘 ㅁㅁㄴㄷ곰ㄴㄷ소343762346
아래는 experiment_1.pl 의 내용입니다:
experiment_1.pl
open(FILE, "bom");
while() { $all_line .= $_; }
close(FILE);
$all_line =~ s/가나다/가세요/g;
print $all_line;
이제 소스코드를 실행해 봅니다:
$ perl experiment_1.pl
가세요라마바사
가세요라마바사
가세요라마바사
가세요라마바사
아자차카타파하
123512346가세요라마바사묘 ㅁㅁㄴㄷ곰ㄴㄷ소343762346
이제, vim, sed, awk 등을 사용하지 않고 perl로 파일의 문자들을 찾기, 바꾸기를 쉽게 할 수 있습니다. 더 강력하다고 하네요. :)
Forums:
변형
experiment_2.pl
open(FILE, "bom");
while() { $all_line .= $_; }
close(FILE);
$all_line =~ s/가나다/가세요/g;
open(FILE, ">bom1");
print FILE $all_line;
close(FILE);
bom 파일을 찾기 바꾸기한 결과를 바로 출력하는 대신, bom1 이라는 새 파일로 결과를 저장합니다.
강력한 치환기능이, 한글 깨짐 없이 잘 되네요. 2008년 5월 현재, 우분투 최신버전에서 실험중인데, 매우 잘 됩니다. :)
간단히
그냥 간단히 이렇게 해도 됩니다.
$ perl -pi -e 's/가나다/가세요/g' bom
--
http://dongsupark.de/
그러면
bom 파일이 아니라, bom 파일은 원본 그대로 놔두고,
bom2 파일로 저장하게 하려면 어떻게 하면 좋을까요?
sed를 쓰면 되죠
$ sed -e 's/가나다/가세요/g' bom > bom2
이게 perl로도 가능한지는 잘 모르겠네요.
--
http://dongsupark.de/
--
http://dongsupark.de/
shell에서니까
shell에서니까 가능합니다.
스크립트에서 stdout으로 출력을 해주면 땡이잖아요 -ㅅ-
-i 옵션
-i 옵션을 사용하면 원본 파일을 백업할 수는 있습니다.
find ./ -name bom.* -exex perl -pi.orig -e 's/바뀌고/바뀔/g' {} \;
perl 재밌네요~
perl 재밌네요~
해커가 되려면 반드시 배우라더군요
http://ubuntulove.tistory.com/5
에릭 레이먼드는 해커가 되기 위해 파이썬 부터 배우고, 그다음 펄 그다음 C 그다음 리스프를 이야기하고 있더군요.
펄은 특히 위에서 볼 수 있는 것 처럼, 유닉스의 시스템 관리에서 매우 잘 쓰이며, 따라서, 해커는 시스템 관리자가 관리용으로 만든 펄 구문을 해독할 수 있을 정도는 되어야 한다고 합니다.
해커가 될려면 파이썬 보다 펄을 먼저 배워야 합니다.
>에릭 레이먼드는 해커가 되기 위해 파이썬 부터 배우고, 그다음 펄 그다음 C 그다음 리스프를 이야기하고 있더군요.
에릭레이먼드는 개발자/기술자 부류이기 보다는 정치가/행정가 쪽 부류에 가까운 사람입니다. 에릭레이먼드의 낚시에 낚여서 파이썬쪽으로 간 사람도 많지만..별로~
그리고 해커가 여전히 선호하는 언어는 Perl입니다. 코드골프( http://codegolf.com )
가보면 Perl이 득세를 하지요.
언어의 문법이나 문화자체도 Perl이 해커들의 성향과 가장 근접하죠.
>펄은 유닉스 시스템 관리에서 매우 잘 쓰이며, 따라서 해커는 시스템 관리자가 관리용으로 만든 펄 구문을 해독할 수 있을 정도는 되어야 한다고 합니다.
펄은 유닉스 시스템관리에만 쓰이는게 아니라 MS도 이제 자신들 플랫폼위의 스크립트 언어로 VBscript,PowerShell,Perl 이 3개를 공식적으로 밀고 있습니다. 그리고 Perl은 일본,미국등 해외에서는 프래임웍 기반의 Web 2.0용 언어로 활발히 쓰이고 있고 바이오인포메틱스,언어학,공학,과학,금융등등 각 분야에서 유용하게 쓰이는 범용언어입니다. 그리고 보통 유닉스 관리자들이 쓰는 수준의 Perl은 단순한 구조입니다. 해커들이 시스템 관리용으로 만든 펄 구문을 해독할 수 있을 정도라는 건 앞뒤가 맞지 않는 말 같네요.
해커라면 DVD락을 깬 7 line 526 byte의 DeCSS perl코드정도를 이해하는 정도는 되어야겠죠..
http://www.cs.cmu.edu/~dst/DeCSS/Gallery/qrpff.pl
예전에 포스팅 된 글
예전에 포스팅 된 글 중에 pung96 님이 wiki를 만드셨다는 글이 있는데, 도움이 될것 같네요.
http://kldp.org/node/78014
http://wiki.kldp.org/wiki.php/PerlCommandLineCookBook