grep -Hrl DataLogger /testFolder/ | xargs sed /,$/{N -e"s|DataLogger::copyStringLength(\(dl.[a-zA-Z0-9]\+\)..\(.\+\)(.c_str()\)\+\(,\s*.*;)|IDataLogger::copyString(\2, \1);|g"}
위의 스크립트를 사용하여 DataLogger::copyStringLength(dest, source, length)
에서 IDataLogger::copyString(source, dest)
으로 메서드 호출을 변경하고 있습니다.sed not place in print
위의 스크립트는 내가 원했던 것처럼 보이고 메소드 호출의 개행과 상관없이 모든 것을 대체합니다. 하지만 지금은 그대로 파일의 내부가 아닌 콘솔로만 인쇄됩니다. 나는 sed 호출의 여러 위치에 -i 옵션을 넣으려고 시도했지만 항상 오류가 발생합니다.
의견을 보내 주시면 감사하겠습니다. 왜, 어디에 줄 바꿈이 3 가지 형식이 메소드가, 표시 궁금 분들을 위해
내가 볼 수 없습니다copyStringLength(varA, varB, varC);
copyStringLength(varA, varB,
varC);
copyStringLength(varA,
varB,
varC);
OS X에서이 작업을 수행하고 있습니까? – Barmar
있다면 http://stackoverflow.com/questions/4247068/sed-command-with-i-option-failing-on-mac-but-works-on-linux/4247319#4247319 및 http : //를 참조하십시오. stackoverflow.com/questions/7573368/in-place-edits-with-sed-on-os-x/7573438#7573438 – Barmar
우리는 RHEL6에서 실행 중입니다. 첫 번째 질문을 살펴 보았지만 백업 파일을 표시하지 않는 방법이 있으면 좋을 것입니다. 필요는 없지만 여러 가지 찾기/삭제를 실행하는 것을 저장합니다. –