파일 에디트용 스크립트 질문

cnovice의 이미지

자바파일에서 System.out.println 이 들어있는 라인을 모두 제거하는것을

스크립트로 만들수 있는지여

만들수 있다면 스크립트 예제 좀 부탁드립니다.

파일은 대략 50개 정도입니다.

50개 파일에 들어 있는 System.out.println을 모두 제거하려고 합니다.

nachnine의 이미지

#!/usr/bin/perl

$removeLineWord   = "System.out.println";

foreach (@ARGV){
	$filein = $_;
	$fileout = "$filein.out";	
	open(i,"<$filein") || die "Can't open $_ ";
	open(o, ">$fileout");
	
	while (!eof(i)) {
	$line = <i>;
        if ( $line =~ /$removeLineWord/ ){
    	}else{
      		print o "$line"; 
        }
    }	
    close(o);
    close(i);
}

p.s. 간단하게 짠거라 좀 허접합니다.
그리고 파일은 .out 붙여서 출력되게 했습니다.

동일 파일에 쓰게 하려면 프로그램이 좀 다른 형태가 됩니다.

( 일괄적으로 치환하는것에 바로쓰는것은 별로 권장하지 않습니다만
이경우도 필요하면 올려드리죠.)

p.s . sed, xargs 를 사용한 버젼을 가르쳐드리고 싶은데 실력이 모지
라네요

alfalf의 이미지

find . -name "*.java" -print | while read filename
do
     fgrep -v 'System.out.println' ${filename} > temp
     mv temp ${filename}
done

현재 directory이하의 모든 'java' 확장자 파일을 대상으로 합니다.

cinsk의 이미지

Emacs를 쓰신다면,

dired 모드로 들어가서 여러 파일을 선택한 다음

Q REGEXP <RET> TO <RET>

을 실행하시면 됩니다.