2009-06-01 11 views
6

간단히 로그 파일을 읽고 검색을 수행 한 다음 동일한 로그 파일에 변경 사항을 기록하기 만하면됩니다.Perl : 파일을 반복하고 대체하십시오.

Perl에서이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

perl -i -pe 's/some/thing/' log.file 

Here

답변

9

나는 일반적으로 이것에 대한 하나의 라이너를 코드

perl -pi.bak -e "s/find/replace/g" <file> 

참고 -i.bak 부분 - 확장자가 .bak 인 백업 파일이 생성됩니다. (... 당신은 펄에 대해 물어 내가 아는)

perl -pi -e "s/find/replace/g" <file> 
+0

그러나 왜 내가 backreferances를 사용할 수 없습니까? perl -pi -e "s/foo (. *) bar/bar $ 1foo /"tezt2와 같이 작동하지 않습니다. –

+2

셸에서 문자열이 손상되었을 수 있습니다. *가 확장되지 않도록 ""을 ''로 바꾸십시오. –

+0

고마워요! –

8

이 종종 한 줄 이루어집니다 : 참조 :

1

하거나 sed를 사용할 수 있습니다 : 당신은 그물없이 재생하려면 당신은 백업하지 않고 기존 파일을 덮어 쓰기이 작업을 수행 할 수 있습니다

sed -i 's/find/replace/g' <file> 
+0

sed가 정규 표현식 규칙을 처리하는 방식은 Perl과는 다르다. – GJTorikian

관련 문제