\f
Perl의 양식 피드 문자입니다. 이 잘못된 파일은 Perl과 XML을 처음 접하는 사람이 만든 것처럼 보입니다.
여기에는 Perlier 수정 사항이 많이 있습니다. sed로 허용되는 답변과 달리 모든 파일의 업데이트를 자동화하는 OP의 목표를 충족합니다 find
.
\f
16 진수 코드 대신 간단하게 사용할 수 있습니다 x0c
.
find . -type f -exec perl -pi.bkp -e 's [ \f ilename ][ /f ilename ]gx' {} \;
여기에 일반 파일 만 반환 -type f
하도록 tel find
에 추가 했습니다. 그렇지 않으면 목록으로 find
돌아가서 .
편집하려고 할 때 경고가 트리거되지만 다른 모든 것은 여전히 작동합니다.
또한 x
실제 공백을 무시 하는 플래그를 사용하여 정규식을 쉽게 볼 수 있도록하여 정규식의 요소를 간격을 둘 수 있습니다. 당신이 이것을 좋아하지 않으면, 여기없는 것입니다 :
find . -type f -exec perl -pi.bkp -e 's[\filename][/filename]g' {} \;
그리고 모든 폼 피드 문자가 의심스럽고 모두로 교체해야 /f
할 경우 한 줄짜리를 더 얇게 만들 수 있습니다.
find . -type f -exec perl -pi.bkp -e 's[\f][/f]g' {} \;
s///
Perl에서 정규식 대체 명령 요소 ( ) 를 둘러싸 기 위해 슬래시를 사용할 필요는 없습니다 . 모든 기호를 사용할 수 있습니다. 그러나 어떤 종류의 대괄호와 같은 기호를 사용하기로 선택한 경우에는 두 가지를 모두 사용해야 s[old][new]
합니다.
슬래시를 사용하지 않으므로 슬래시를 벗어날 필요가 없습니다.
as -i.bkp
: : perl -pi -e
당신은 그 자리에서 편집 할 수 있습니다-그러나 찾기 및 바꾸기 Perl 프로그램이 잘못되었을 때 추가 보험을 원한다면 파일 확장자를 넣어 원본 파일의 사본을 만들 수 있습니다 당신. 여기에을 사용했습니다 .bkp
.
최신 버전의 Perl에서 시스템의 전원 손실 또는 디스크 공간 부족과 같은 심각한 문제가 발생할 경우 내부 편집 기능이보다 탄력적으로 업데이트되었습니다. 최근 Perls의 향상된 내부 편집 기능에 대한 Perl 작성자 brian d foy가 있습니다.
이러한 종류의 작업에 Perl을 사용하는 것을 고려해야합니다. 이는 매우 강력하지만 과소 평가 된 범용 프로그래밍 언어이기 때문에 원래의 디자인 목표는 대체 sed
하고 awk
훨씬 더 나은 것으로 설계되었습니다 .
펄 5의 정규식 매칭 기능과 개선 된 정규식 구문은 지금까지의 그 초과 sed
, awk
펄 간단하고 고급 정규식 조작 모두를위한 가장 현명한 선택하게 떨어져 펄 6에서, 실제로 다른 모든 프로그래밍 언어를.
명확히하기 위해 : sed
제대로 작동 find
하고 sed -i.bkp
편집 한 각 파일의 백업을 만드는 데 사용할 수도 있지만, 내가 아는 한 Perl 5.28 이상의 추가 복원력은 없습니다. 또한 복잡하고 훨씬 덜 강력한 기존 UNIX ® 정규식 구문을 사용합니다.
<\filename>
대신에 누군가가 사용한 것 같습니다 . 이러한 파일의 소스를 추적하고 생성 도구의 문제점을 개발자에게 지적해야합니다. 파일을 수정하기 위해 허용되는 대답은 괜찮습니다.</filename>
\f