¿Cómo puedo escribir un script (bash) que analice todos los archivos .tex en una carpeta para detectar la aparición de \todo
, Y emite el nombre de archivo y LineNumber donde se produce?
Lo que tengo hasta ahora:
#!/bin/bash
for texfile in *.tex ; do
**Scan for \todo**
**output $textfile$ , linenumber**
done
Quiero estar seguro de que mis archivos .tex no contienen \todo{sometext}
cuando los entrego
No tiene que ser bash, solo lo elegí por simplicidad. Grep etc. sin duda sería bienvenido.
\todo{}
abarcar varias líneas? Si no, es trivial eliminarlos automáticamente.Respuestas:
grep
puede hacerlo por sí mismo, puede envolverlo en un script si es necesario:-r
para recursivo-n
para visualizar el número de línea en el archivoPor defecto, grep mostrará la línea que contiene la coincidencia. Para algunos formatos, esto puede significar mucha salida. Si desea restringir la salida de modo que solo obtenga la coincidencia y algunos caracteres a cada lado, use esto:
los
-o
significa "solo mostrar resultados coincidentes", sin embargo, esto solo mostraría\todo
. Para obtener algo de contexto, permitimos cualquier cantidad de caracteres de hasta 20 en cualquier lado de la partida. los.
coincide con cualquier cosa, y el{0,20}
Repite este partido hasta 20 caracteres.fuente