Para escribir este pseudocódigo con Regex

Para escribir este pseudocódigo con Regex

Estoy haciendo un Makefile que ejecuto regularmente mediante Crontab todos los días a las 02:30

crontab -e; 30 2 * * * /bin/thePseudocode

Pseudocódigo similar a Python

directories = ["Cardiology", "Rheumatology", "Surgery"]
for directory in directories
   files = directory.files(); % not sure if such a parameter exists
   files = files.match(.*tex); % trying to get only tex files; not sure if match exists
   summaryFile = "";
   for texFile in files
      summaryFile.add( ...
                textFile.match( (?s)\\begin{question}.*?\\end{question} ) ...
      )
      % Solution based on this thread
      % Problem in writing this Regex in Perl http://unix.stackexchange.com/questions/159307/to-match-only-innermost-environment-by-regex
   end
end

save this `summaryFile` as /Users/Masi/Dropbox/QuestionSummary.tex

donde filesestá la lista de todos los archivos en el directorio y summaryFilees el archivo que enumera todas las preguntas en todos los archivos tex. Esos archivos, finalmente quiero compilarlospdflátexy lea cada mañana con un lector de PDF.

Archivo de ejemplo que se ubica en la carpeta.Reumatología

\section{Takayasu arteritis}

\begin{question}
{You get a patient. 
What do you notice first in this patient?}
Absence of peripheral pulse.
\end{question}

\begin{question}
{What was the first Takayasu case?}
Young woman in Asia with red vessels in the eye. 
So special eye diagnosis done. 
Affects eye.
\end{question}


Fever of unknown origin can be used when you do not know what is causing the disease. 

% Show cases in MedScape and ask class. 

Aneurysms. 


\subsection{Treatment}

\begin{question}
{What you should always include in Takayasu treatment? 
What are the symptoms?}
Blood pressure.
Aneurysms which will burst without treatment. 
So blood pressure decreasing drugs like beta blockers along in combination with other drugs.
\end{question}

\begin{question}
{When is the checkup of the Takayasu arteritis?} 
Only once per year. 
You could expect every month like normally in this kind of diseases.
But only once per year.
\end{question}

donde debería estar la salida para todos los archivos de la carpeta

\section{Rheumatology}

\begin{question}
{You get a patient. 
What do you notice first in this patient?}
Absence of peripheral pulse.
\end{question}

\begin{question}
{What was the first Takayasu case?}
Young woman in Asia with red vessels in the eye. 
So special eye diagnosis done. 
Affects eye.
\end{question}

\begin{question}
{What you should always include in Takayasu treatment? 
What are the symptoms?}
Blood pressure.
Aneurysms which will burst without treatment. 
So blood pressure decreasing drugs like beta blockers along in combination with other drugs.
\end{question}

\begin{question}
{When is the checkup of the Takayasu arteritis?} 
Only once per year. 
You could expect every month like normally in this kind of diseases.
But only once per year.
\end{question}

Archivo Make

all: 
   pdflatex /Users/Masi/Dropbox/QuestionsSummary.tex /Users/Masi/Dropbox/QuestionsSummary.pdf
   pdflatex /Users/Masi/Dropbox/QuestionsSummary.tex /Users/Masi/Dropbox/QuestionsSummary.pdf % to compile a few times to be successful
pdflatex 
% I am not sure if I should have some error management, since often the pdflatex crashes
% So pdflatex is not probably the right tool to go

¿Cómo puede crear un pseudocódigo de este tipo en las herramientas que prefiera? Me gusta Python pero no lo haría todo.

Respuesta1

Si entendí correctamente, estás buscando algo como esto (en bash):

#!/usr/bin/env bash

## avoid errors if a directory has no *tex files
shopt -s nullglob

directories=("Cardiology" "Rheumatology" "Surgery");

## Change this to set whichever options you want.
printf "%s\n%s\n" "\documentclass{YOURCLASS}" "\begin{document}"

for directory in ${directories[@]}
do
    ## Reset the counter, avoid empty sections.
    c=0;
    for file in "$directory"/*tex
    do
        let c++
        [ "$c" -eq 1 ] && printf "\n%s\n" "\section{$directory}"
        ## Extract the wanted lines
        perl -lne '$a=1 && print "" if /\\begin{question}/; 
                  print if $a==1;
                  $a=0 if /\\end{question}/;' "$file" 
        echo ""
    done
done
echo "\end{document}"

Si ejecuta ese script desde el directorio que contiene Cardiología, etc., debería proporcionar un resultado como este:

información relacionada