Filtragem de texto usando SED ou AWK

0

Meu documento tem o seguinte aspecto:

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

A saída que estou procurando é algo assim:

code1

  -- comment1
  code1A

  -- comment2
  code1B

codeB
    
por jonaprieto 14.11.2018 / 16:41

2 respostas

1

Observação : uma edição da pergunta tornou essa solução obsoleta.

Como você deseja filtrar linhas específicas para a saída, grep pode fazer o trabalho.

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

Postar uma saída desejada sem especificar as regras / lógicas a serem aplicadas para que ela seja obtida realmente não ajuda a resolver seu problema. Alguém poderia apenas ecoar / imprimir a saída sem relação com a entrada. Supondo que você queira as linhas entre \begin{code} e \end{code} excluindo qualquer uma delas, tente

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

Se você precisar de linhas vazias, anexe /^ *$/p ao script sed .

EDITAR: assim:

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

  -- comment2
  code1B

codeB
    
por 14.11.2018 / 17:35