Linux "rpl"명령이 텍스트를 대체하지 않습니다.


-1

내가 사용하고 rpl교체 리눅스에서 프로그램 date(pdate(일부 파일입니다.
그러나 말한다 A Total of 0 matches replaced in 1 file searched.
위한 그렙 출력이 동안 date(이다 :

ariyan@ariyan-laptop:/var/www/moodle21$ grep -wR 'date(' admin/uploaduser.php
$today = make_timestamp(date('Y', $today), date('m', $today), date('d', $today), 0, 0, 0);

나는 rpl이것을 다음과 같이 사용 하고있다.

rpl -wR 'date(' 'pdate(' admin/uploaduser.php

문제가 무엇입니까?


그 디렉토리에있는 모든 파일이나 그 중 하나에 bork합니까? 아마도 허가?
RobotHumans 11

@ aking1012 : 모든 파일. 모든 권한은 777입니다!
RYN

1
이 질문은 최소한 3 개의 SE 사이트에 교차 게시되었습니다 : superuser.com/questions/351663/ ... askubuntu.com/questions/73322
Keith Thompson

답변:


3

전에는이 도구를 사용 해본 적이 없지만 "-w"가 예상 한 것과 약간 다른 단어 경계를 처리하고 있다고 추측하고있는 것에 대한 설명을보고 있습니다. "-w"를 해제하면 작동합니다. 또한이 예에서는 일치시킬 단일 파일을 지정 했으므로 -R이 재생되지 않습니다.

시험:

rpl 'date(' 'pdate(' admin/uploaduser.php

편집 : 약간의 연구 후, 나는 단어가 경계로 구두점을 처리하지 rpl에 대한 보고 버그 가 발견 , 이것이 작동하지 않는 이유입니다. 따라서 유일한 옵션은 다른 도구를 사용하는 것입니다. Sed는이 작업을 염두에두고 있으므로 다음을 통해 Sed를 완성 할 수 있습니다.

sed -i 's/\bdate(/pdate(/g' admin/uploaduser.php

그렇게하면 rpl이 그랬던 것처럼 인라인 바꾸기 (-i)를 수행하고 날짜를 시작하고 pdate로 바꾸는 것과 일치하게됩니다.


하지만 내가 좋아하는 strigs가 usergetdate(또는 getdate(내가 그 교체 싶지 않아!
RYN

구두점을 단어 경계로 처리하지 않는 rpl 버그가있는 것 같습니다. 나는 그것을 다음 sed 진술과 함께 일하게 할 수 있었다sed -i 's/\bdate/pdate/g'
Alex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.