lunes, 17 de febrero de 2014

Resta de archivos

Supongamos un script que ejecuta acciones vía curl

Varias líneas con

curl -vsX POST -d '{id:1}' url
curl -vsX POST -d '{id:2}' url
curl -vsX POST -d '{id:3}' url
.
.
.
Cuando ejecutamos esto es como

nohup script > script.log 2> script.err&

Y nos vamos a dormir porque tarda mucho. Algo así como 2 días.

Pero resulta que el no todos los curls se ejecutan bien. Y el archivo scripts pesa 600mg y el de logs mas

Investigando encontré lo que viene más simple.

Primero hacemos de script y script.log archivos con solo los id

grep -o '[0-9]\+' script > script.ver
grep -o '[0-9]\+' script.log > script.log.ver

Luego hay un comando que se llama comm que compara 2 archivos por contenido por match exacto y separa en 3 columnas lo que tiene solo un archivo, solo el otro, o lo tienen los 2 en comun. Con parámetros se puede excluir columnas. A mi solo me importan los que fallaron.

comm. -23 script.ver script.log.ver > TODO

Listo. En "TODO" tenemos la lista. A hacer una selección de columnas en sublime o vim y listo para reintentar los curls que no entraron.