밤새도록 검색했지만 해결책을 찾을 수 없습니다. (저도 읽었습니다.텍스트에서 특정 라텍스 명령과 다음 닫는 대괄호를 제거합니다.)
특수 명령의 매개변수를 두 번째 파일로 추출하려는 LaTeX 파일이 여러 개 있습니다.
많은 "짧은" 줄, 즉 80자를 모두 포함하는 개행 줄이 있는 LaTeX 파일을 상상해 보십시오. 따라서 문제의 명령에 대한 인수는 소스 파일에서 두 줄 이상에 걸쳐 있을 가능성이 높습니다. 또한 추출해야 하는 추가 중괄호가 있는 몇 가지 추가 LaTeX 명령이 있을 수도 있습니다.
Lorem ipsum dolor sit amet, \ltxcmd{consetetur sadipscing} elitr, sed diam
nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
erat, sed diam voluptua. At vero eos et accusam et justo \ltxcmd{duo
dolores \emph{et ea rebum}}. Stet clita kasd gubergren, \ltxcmd{sea takimata
\textbf{sanctus} \emph{est} Lorem} ipsum dolor sit amet. Lorem ipsum dolor sit
amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor
invidunt ut labore et dolore magna aliquyam erat, sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea
rebum.
그러면 다음과 같은 세 가지 매개변수가 반환됩니다.
{consetetur sadipscing}
{duo dolores \emph{et ea rebum}}
{sea takimata \textbf{sanctus} \emph{est} Lorem}
제가 먼저 시도해 봤는데
cat file1.tex | sed -n 's/.*\\ltxcmd\({[[:alnum:] ]*}\).*/\1/p'
하지만 이렇게 하면 줄 끝에서 검색이 종료되므로 시도해 보았습니다.
tr \n ' ' < file1.tex | sed -n 's/.*\\ltxcmd\({[[:alnum:] ]*}\).*/\1/p'
첫 번째 항목을 반환하고 나머지는 변경하지 않고 그대로 둡니다.
다음 시도는 g
검색을 다시 시작하기 위해 sed 표현식 끝에 a를 추가하는 것이었지만 도움이 되지 않았습니다.
어떤 팁이 있나요? bash와 sed를 환영합니다.
답변1
귀하의 질문에 대한 답변은 아니지만 의견이 너무 깁니다.
Bash나 다른 명령줄에서는 복잡할 것입니다. 내 생각에 이들의 가장 큰 어려움은 다른 줄에 중첩될 수 있기 때문에 {
어느 것이 닫는 괄호인지 결정하기 위해 여는 괄호를 세어야 한다는 것입니다 . }
이 문제를 해결하기 위한 최고의 도구로 Python 스크립트를 권장합니다.
정규 표현식을 사용하려면 Notpad++(와인과 함께 작동)를 사용할 수 있습니다. 내가 언급한 중첩이 \\ltxcmd(\{.*\})
아니었다면 {}
비슷한 것이 작동할 것입니다 .
Python 정규식 검색의 시작점 https://stackoverflow.com/questions/454456/how-do-i-re-search-or-re-match-on-a-whole-file-without-reading-it-all-into-memor