Perl에서 내장 편집 중에 변경 사항을 기록하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/611981

문제

파일에서 찾아서 교체하기 위해 Perl 프로그램을 호출하는 간단한 KSH를 스크립팅했습니다. 통과 된 Arg는 홈 디렉토리입니다.

 perl -pi -e 's/find/replace/g' $1/*.html

잘 작동합니다. 그러나 모든 변경 사항을 로그 파일로 출력하고 싶습니다. 나는 배관과 리디렉션을 시도했지만 작동 할 수 없었습니다. 어떤 아이디어?

고마워, 글렌

도움이 되었습니까?

해결책

모든 변경 사항을 STDERR로 보내기 위해 이와 같은 것 :

perl -pi -e '$old = $_; s/find/replace/g and warn "${ARGV}[$.]: $old $_"; close ARGV if eof' $1/*.html

업데이트 : 고정 $. 여러 파일에서.

다른 팁

stderr에 인쇄하고 STDERR 출력 만 아래와 같이 파일로 리디렉션 할 수 있습니다.

perl -pi -e 'chomp($prev=$_);s/find/replace/g and print STDERR "$ARGV - $.: $prev -> $_"; close ARGV if eof' $1/*.html 2> logfile.txt

편집 : 여러 입력 파일을 사용하는 경우 파일 이름과 고정 라인 번호 디스플레이가 추가되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top