Latex 파일의 서문에 있는 텍스트를 sed로 바꾸는 방법은 무엇입니까?

Latex 파일의 서문에 있는 텍스트를 sed로 바꾸는 방법은 무엇입니까?

다음 sed 코드를 작성했지만 작동하게 하는 방법을 찾지 못했습니다...

sed -is 's/documentclass\{standalone\}/documentclass\[class\=memoir\]\{standalone\}/gp' *.tex

내가 잘못된 방식으로 이스케이프 시퀀스를 사용하고 있습니까? 다음은 반환된 오류입니다.

sed: -e expression #1, char 76: Invalid content of \{\}

답변1

BRE(기본 정규 표현식) 모드(예: -E또는 -r명령줄 옵션 없음)에서는 중괄호가 특수하지 않고 이스케이프된 중괄호가 수량자에 사용됩니다. 예를 들어 \{1,3\}오류 메시지 standalone는 숫자 수량자로 구문 분석할 수 없기 때문입니다. 그래서 당신은 다음을 원합니다 {standalone}:

$ printf '%s\n' 'documentclass{standalone}' | sed 's/documentclass{standalone}/documentclass[class=memoir]{standalone}/gp'
documentclass[class=memoir]{standalone}
documentclass[class=memoir]{standalone}

또는 이스케이프된 중괄호를 유지하되 ERE(확장 정규 표현식) 모드를 사용하세요.

$ printf '%s\n' 'documentclass{standalone}' | sed -r 's/documentclass\{standalone\}/documentclass[class=memoir]{standalone}/gp'
documentclass[class=memoir]{standalone}
documentclass[class=memoir]{standalone}

두 경우 모두 RHS에서 이스케이프할 필요가 있는 항목은 없습니다.

또한보십시오:

또한 적어도 GNU sed에서는 -is파일이 그 자리에서 편집되어 접미사가 붙은 백업 파일이 생성된다는 점에 유의하세요 s. -i및 옵션을 전달하려면 -s별도로 또는 다른 순서로 수행해야 합니다 -si. 그러나 iirc 는 후자가 아마도 중복될 수 있음을 -i의미합니다 .-s

관련 정보