다음과 같은 형식의 LaTeX 문서가 있습니다.
\section*{3.1}
\addcontentsline{toc}{section}{3.1}
아니면 일반적으로
\section*{x.y}
\addcontentsline{toc}{section}{x.y}
x가 1에서 31 사이이고 y가 1에서 12(포함)(날짜) 사이인 경우. 이 줄을 형식으로 변경하고 싶습니다.
\section*{x.y.}
\addcontentsline{toc}{section}{x.y.}
이를 수행할 수 있는 간단한 스크립트가 있습니까?
답변1
sed를 사용하여 줄의 앞뒤 부분을 일치시키고 .
중간에 넣을 수 있습니다. 이 명령은 정규식 대체를 수행합니다. 그룹을 정의하고 대체 텍스트에서 이러한 그룹을 참조하세요.s/REGEXP/REPLACEMENT/
\(…\)
\1
\2
sed <original.tex >replaced.tex \
-e 's/^\(\\section\\*{[0-9]*\.[0-9]*\)\(}\)$/\1.\2/' \
-e 's/^\(\\addcontentsline{toc}{section}{[0-9]*\.[0-9]*\)\(}\)$/\1.\2/'
sed를 사용하는 또 다른 방법은 마지막 항목을 다음 }
으로 바꾸는 것입니다..}
sed <original.tex >replaced.tex \
-e '/^\\section\\*{[0-9]*\.[0-9]*}\)$/ s/}$/.&/' \
-e '/^\\addcontentsline{toc}{section}{[0-9]*\.[0-9]*}/ s/}$/.&/'
두 모드를 결합하여 사용할 수도 있지만 \|
이 경우 코드가 더 짧아지지만 덜 명확해질 것이라고 생각합니다.
Linux에서 파일을 제자리에서 바꾸려면 다음을 사용할 수 있습니다.
sed -i -e … somefile.tex