Here's how I would do it:
Code:
#!/bin/bash
echo; echo "[fn: distinguish_logins]"; echo
#function distinguish_logins ()
#{
rm ./logins_total.log
rm ./logins_unique.log
unset LOGINS_TOTAL[*]
unset LOGINS_UNIQUE[*]
echo "cat ./log_records.log"
echo "~~~~~~~~~~~~~~~~~~~~~"
cat ./log_records.log
echo
printf "%-11s" "Record"
printf "%+11s" "Log Total"
printf "%+11s\n" "Log Unique"
printf "%-11s" "~~~~~~"
printf "%+11s" "~~~~~~~~~"
printf "%+11s\n" "~~~~~~~~~~"
let -i count=0
for LOG in $(cat ./log_records.log); do
let count=count+1
echo $LOG | cut -d, -f2 >> ./logins_total.log
echo $LOG | cut -d, -f3 >> ./logins_unique.log
LOG_DATE[$count]=$(echo $LOG | cut -d, -f1)
LOGINS_TOTAL[$count]=$(echo $LOG | cut -d, -f2)
LOGINS_UNIQUE[$count]=$(echo $LOG | cut -d, -f3)
printf "%-11.10s" ${LOG_DATE[$count]}
printf "%+11.10s" ${LOGINS_TOTAL[$count]}
printf "%+11.10s\n" ${LOGINS_UNIQUE[$count]}
# echo "${LOGINS_TOTAL[$count]} ${LOGINS_UNIQUE[$count]}"
done
echo
echo "Logins Total:"
echo "~~~~~~~~~~~~~"
cat ./logins_total.log
echo
echo "Logins Unique:"
echo "~~~~~~~~~~~~~~~"
cat ./logins_unique.log
echo
echo -n "LOGINS_TOTAL="
for (( i = 1; i <= $count; i++ )); do echo -n "${LOGINS_TOTAL[$i]},"; done; echo
echo -n "LOGINS_UNIQUE="
for (( j = 1; j <= $count; j++ )); do echo -n "${LOGINS_UNIQUE[$j]},"; done; echo
echo "[done]"; echo
#}
exit 0
Giving this as output:
Code:
[fn: distinguish_logins]
cat ./log_records.log
~~~~~~~~~~~~~~~~~~~~~
2010-01-01,4485,3148
2010-01-02,5817,3954
2010-01-03,10671,6503
Record Log Total Log Unique
~~~~~~ ~~~~~~~~~ ~~~~~~~~~~
2010-01-01 4485 3148
2010-01-02 5817 3954
2010-01-03 10671 6503
Logins Total:
~~~~~~~~~~~~~
4485
5817
10671
Logins Unique:
~~~~~~~~~~~~~~~
3148
3954
6503
LOGINS_TOTAL=4485,5817,10671,
LOGINS_UNIQUE=3148,3954,6503,
[done]
Of course, I would want to insist that the spaces between fields be taken out of the original log records.
