#!/bin/bash
# Skrypt searchinfo wyodrębniający z pliku dziennika zapisanego w formacie
# Common Log Format i przetwarzający informacje z wyszukiwarek zawarte
# w przekierowującym adresie URL. 

host="intuitive.com"    # Wpisz nazwę swojej domeny.
maxmatches=20
count=0
temp="/tmp/$(basename $0).$$"

trap "`which rm` -f $temp" 0

if [ $# -eq 0 ] ; then
  echo "Użycie: $(basename $0) plik_dziennika"  >&2 
  exit 1
fi
if [ ! -r "$1" ] ; then
  echo "Błąd: nie można otworzyć pliku $1 do analizy." >&2
  exit 1
fi

for URL in $(awk '{ if (length($11) > 4) { print $11 } }' "$1" | \
  grep -vE "(/www.$host|/$host)" | grep '?')
do
  searchengine="$(echo $URL | cut -d/ -f3 | rev | cut -d. -f1-2 | rev)"
  args="$(echo $URL | cut -d\? -f2 | tr '&' '\n' | \
     grep -E '(^q=|^sid=|^p=|query=|item=|ask=|name=|topic=)' | \
  sed -e 's/+/ /g' -e 's/%20/ /g' -e 's/"//g' | cut -d= -f2)"
  if [ ! -z "$args" ] ; then
    echo "${searchengine}:      $args" >> $temp
  else
    # Brak typowego ciągu wyszukującego. Odczytanie całego żądania GET.
    echo "${searchengine}       $(echo $URL | cut -d\? -f2)" >> $temp
  fi
  count="$(( $count + 1 ))"
done

echo "Informacje o wyszukiwanych frazach odczytane z pliku ${1}:"

sort $temp | uniq -c | sort -rn | head -$maxmatches | sed 's/^/  /g'

echo ""
echo Sprawdzonych wpisów w dzienniku: $count, liczba wszystkich wpisów: $(wc -l < "$1").

exit 0
