여러 파일에서 패턴을 검색하고 모든 하위 부분을 바꿉니다.

여러 파일에서 패턴을 검색하고 모든 하위 부분을 바꿉니다.

친구가 LaTeX로 논문을 작성하는 것을 돕고 있는데 "검색 및 바꾸기"를 위한 빠른 솔루션이 필요합니다. Linux에서 터미널을 사용하여 다음 모드를 찾는 방법:

\caption{*\cite{*}}

그리고 \cite로 교체\protect\cite

저는 케이트를 사용합니다. 검색 기능을 사용하여 처음에 2,000개 이상의 일치 항목을 찾았고, 검색을 구체화하여 약 300개로 좁혔습니다. 하지만 모든 것을 교체하고 싶지 않기 때문에 범위를 더 좁힐 필요가 있습니다 . 발생하는 부분 \cite만 교체하고 싶습니다.\cite\caption{}

답변1

제목과 인용 텍스트에 특수 문자가 포함되어 있지 않다고 가정하는 GNU sed 정규 표현식 (특히 *예제의 첫 번째 문자는 포함하지 않아야 \하고 두 번째 문자 *는 포함하지 않아야 함 )}

s:(\\caption\{[^\]+)(\\cite\{[^}]+\}\}):\1\\protect\2:g

나는 그것이 작동해야한다고 생각합니다. 가능하다면비어 있는+제목 및/또는 인용 문자열의 수정자를 로 변경할 수 있습니다 *. 파일을 수정하지 않고 다음 명령을 사용하여 테스트할 수 있습니다.

sed -nr 's:(\\caption\{[^\]+)(\\cite\{[^}]+\}\}):\1\\protect\2:gp' files

이것이 올바른 인스턴스를 찾아 수정한 것으로 보이면 옵션을 사용하여 파일을 그 자리에서 수정하도록 할 수 있습니다 -i. 별도의 복사본을 아직 작업하지 않은 경우 자동으로 백업을 만들 수 있습니다.

sed -i.bak -r 's:(\\caption\{[^\]+)(\\cite\{[^}]+\}\}):\1\\protect\2:g' files

sed가 작동하지 않으면 Perl에서도 비슷한 표현을 사용할 수 있습니다. 다른 버전의 sed도 작동하지만 특수 문자를 다르게 이스케이프해야 할 수도 있습니다.

관련 정보