파일을 수정한 후 파일에서 문자열을 찾아 바꾸는 방법

파일을 수정한 후 파일에서 문자열을 찾아 바꾸는 방법

다음과 같은 목표를 달성하려고 노력합니다.

1) 파일 이름은 동일하지만 새로운 내용으로 새 파일이 업로드됩니다.

2) 파일의 특정 문자열을 확인하고 교체하는 이벤트 트리거

3) 파일을 제자리에 저장하거나(루프 가능) 수정하여 파일의 새 복사본을 만들 수 있습니다.

dievent 및 incron을 사용하려는 이벤트 캡처의 경우 둘 다 이벤트를 캡처할 수 있지만 파일에서 문자열을 찾아 바꾸는 명령을 실행하는 데 문제가 있습니다.

찾기 및 바꾸기 기능을 사용하려면 sed 및 Perl을 사용해 보세요.

SED+INCRON:/path to file folder/ IN_MODIFY /bin/sed -i 's+/pub/+/+g' filename.xml

드라이버+PERL:

direvent.conf content
watcher {
    path /path to file/;
    event write;
    command "/usr/bin/perl script.pl";
}

script.pl content
#!/usr/bin/perl
use strict;
use warnings;

perl -pe 's/old_string/new_string' filename.xml

누군가 아이디어를 제안할 수 있나요?

답변1

귀하의 질문을 잘 이해하지 못하지만 귀하가 원하는 것은 다음과 같습니다.

perl -i -pe 's/oldstring/newstring/g' /some/file

oldstring쉘(또는 쉘스크립트)에서 이 명령을 실행하면 다음으로 대체됩니다.newstring/some/file

답변2

코드에서 "폴더 경로"를 검색한 다음 sed/perl 명령에서 해당 경로를 잊어버렸습니다(이 경우 상대 경로는 확실하지 않지만 테스트에서는 기본값으로 설정되었습니다 /).

파일 자체를 보고 사용하기 위해 incron을 사용하는 것은 어떨까요?

/path/to/file.xml IN_MODIFY,IN_NO_LOOP /bin/sed -i 's+/pub/+/+g' $@

참고: IN_NO_LOOP이는 sed 명령이 수정될 때 동일한 이벤트를 트리거하는 것을 방지하기 위한 것입니다.

관련 정보