diff --git a/tour-parse b/tour-parse new file mode 100755 index 0000000..ece715c --- /dev/null +++ b/tour-parse @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +tournament=autumn2013 + +# Regexps to parse the result of game +date='([0-9]{2}\.[0-9]{2}\.[0-9]{4})' +white='(.+)' +black='(.+)' +result='((1|0|0\.5):(1|0|0\.5))' + +# Directories to search `tour_info' in +if [[ $# != 0 ]]; then + tour_dirs=() + for number in $@; do + # Change tour numbers: `1' -> `01', `2' -> `02', and so on + number=0"$number" + number=${number:(-2)} + + tour_dirs+=($tournament/tour_$number) + done +else + tour_dirs=($tournament/tour_*) +fi + +for dir in "${tour_dirs[@]}"; do + number=${dir:(-2)} + number=${number#0} # remove the leading `0' if any + + echo "- number: ${number}" + echo " games:" + + # Add a newline at the end of `tour_info' to parse the last line + tour_info=$(cat $dir/tour_info && echo) + + while read line; do + # Parsed data of game: date a[1], white player a[2], black + # player a[6], and the result a[3] + data=( $(echo "$line" | gawk \ + 'match($0, /'${date}' — '${white}' '${result}' '${black}'/, a) \ + {print (a[1], a[2], a[6], a[3])}') ) + + if [[ ${#data[@]} != 0 ]]; then + echo " - date: ${data[0]}" + echo " white: ${data[1]}" + echo " black: ${data[2]}" + echo " result: \"${data[3]}\"" + echo + fi + done <<< "$tour_info" +done