#!/bin/bash CSV=FALSE while getopts "c" name do case $name in c) CSV=TRUE;; esac done shift $(( OPTIND - 1 )) if [ $# -gt 1 ] then echo "usage: $(basename $0) [ <options> ] [ <filename> ]" >&2 echo "options: -c for CSV format" >&2 exit 1 fi # If the -c option is called, the option index is shifted over once and the # value of the option is stored in $FILE. The default behavior is that the sed # transform will read from standard input if no argument is provided and $FILE # will be empty. FILE=$1 SED_SCRIPT=" s/ CHROMEOS_RELEASE_VERSION=[^ ]*// s/ BOARD=[^ ]*// " if [ $CSV = "TRUE" ] then echo "Location,Status,Fixed,Comments" SED_SCRIPT=" s/ ...[A-Z]*// $SED_SCRIPT s/ /,/ s/$/,,/ " sed "$SED_SCRIPT" $FILE else SED_SCRIPT=" s/^[^ ]* ...[A-Z]* // $SED_SCRIPT s/is up/servod &/ s/.*pwr_button:press.*/power button is stuck down/ s/^\(not running servod\) \(not running brillo\)$/\1, \2/ s/^not running servod$/up but not running servod, reason unknown/ s/^servod not configured$/running brillo, BOARD for &/ s/^servod failed$/servod running, but not working/ s/^is down/no answer to ping/ s/^\(not running servod\) \(ssh is down\)$/\1, ping is up, \2/ " sed "$SED_SCRIPT" $FILE | sort | uniq -c | awk '{ print ; sum += $1 } END { printf "%7d total\n", sum }' | sort | cut -c -72 fi