Selftest 3: počítání klientů (2.díl)
Ahoj,
pokořil jsem progtest na 100%, ale je mi jasné, že ten skript je naprostá prasárna.
Měl bych několik otázek, pokud by se našel někdo, kdo by poradil, byl bych velice vděčný. :)
1) Nepřišel jsem na lepší způsob, jak řešit grep pro dva různé případy a pak je spojit. Regexy příliš neovládám, ale přijde mi, že by to stejně nešlo. Možná tak v AWK?
2) Řazení si myslím mám v pořádku, ale najití nejvyššího počet výskytů půjde přes AWK nějak elegantněji, minimálně by příkaz pro najití maxima a vypsání ip adres mohl být v jednom AWK, bohužel se mi to tam nepodařilo (z neznalosti) nacpat. Přes BEGIN a příkaz mi to neprošlo... příkaz a END zase vypíše jen poslední IP adresu. Má někdo lepší nápad?
Ošklivý, ale funkční kód:
error=`cat apache.log | grep '\[error\]' | awk '{print $13}' | cut -f1 -d"]"`
obyc=`cat apache.log | grep -v '\[error\]' | awk '{print $6}'`
ips=$obyc`echo -e "\n$error"`
ipsseradit=`echo "$ips" | sort -n | uniq -c | sort -k1,1n | awk '{print $1" "$2}'`
pocet=`echo "$ipsseradit" | awk '{if($1>max){max=$1}} END {print max}'`
echo "$ipsseradit" | awk -v var=$pocet '{if ($1==var){print $2}}' | sort -t. -k1,1n -k2,2n -k3,3n -k4,4n