#!/bin/bash

# 1. Comprobar paso de argumentos
if [ $# -ne 2 ]; then
    echo "Uso: $0 <log> [modo]"
    exit 1
fi

ARCHIVO=$1
MODO=$2

#Comprobar que ARCHIVO es un fichero
if [ ! -f "$ARCHIVO" ]; then
	echo "ERROR: $ARCHIVO no es un fichero o no existe"
fi

#Extraemos la parte para luego procesarla en funcion del modo
EXTRACCION=$(grep " 200 " $ARCHIVO | sed -E 's/^([0-9.]+) .* \"[A-Z]+ ([^ ]+) HTTP\/1\.[01]\".*/\1 \2/ ')

if [ "$MODO" == "repite-si" ]; then
    # Ordenar por IP y mostrar todo. -k1,1 hace q solo se fije en la primera para ello.
    echo "$EXTRACCION" | sort -k1,1
elif [ "$MODO" == "repite-no" ]; then
    # Ordenar, eliminar duplicados y contar ocurrencias
    # uniq -c pone el número al principio, usamos sed para darle formato final
    echo "$EXTRACCION" | sort | uniq -c | sed -E 's/^[[:space:]]*([0-9]+) (.*)/\2 --> \1 veces/'
else
    echo "Error: La opción debe ser 'repite-si' o 'repite-no'"
    exit 1
fi