SED 또는 AWK를 사용한 텍스트 필터링

SED 또는 AWK를 사용한 텍스트 필터링

내 문서에는 다음과 같은 측면이 있습니다.

Text1
\begin{code}
code1
\end{code}
Text2
\begin{code}
  -- comment1
  code1A
\end{code}
Text3

\begin{code}
  -- comment2
  code1B
\end{code}
Text4

\begin{code}
codeB
\end{code}
Text 5

내가 찾고 있는 결과는 다음과 같습니다.

code1

  -- comment1
  code1A

  -- comment2
  code1B

codeB

답변1

노트: 질문을 수정하면 이 솔루션이 더 이상 사용되지 않습니다.


특정 출력 줄만 필터링하려고 하므로 이렇게 grep하면 작업이 수행됩니다.

$ grep -v -e "T[0-9]" -e '^\\begin{code}$' -e '^\\end{code}$' file.txt
code1
  -- comment1
  code1A
  -- comment2
  code1B
codeB

답변2

규칙/논리를 지정하지 않고 원하는 출력을 게시하는 것은 실제로 문제 해결에 도움이 되지 않습니다. 누군가 입력을 포함하지 않고 출력을 에코/인쇄할 수 있습니까? 둘 사이에 선을 넣고 둘 중 하나를 제외한다고 가정하면 \begin{code}다음 \end{code}을 시도하십시오.

sed -n '/\\begin/,/\\end/ {/{code}/!p}' file
code1
  -- comment1
  code1A
  -- comment2
  code1B
codeB

빈 줄이 필요한 경우 스크립트 /^ *$/p에 추가하세요.sed

편집하다:이와 같이:

$ sed -n '/\\begin/,/\\end/ {/{code}/!p}; /^ *$/p' file
code1
  -- comment1
  code1A

  -- comment2
  code1B

codeB

관련 정보