#!/usr/bin/env bash YEAR=2014 TOURNAMENT=2-summertime SCRIPT_PATH=`dirname $0` # 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=$(printf "%02g" "$number") tour_dirs+=("$SCRIPT_PATH"/"$YEAR"/"$TOURNAMENT"/tours/"$number") done else tour_dirs=("$SCRIPT_PATH"/"$YEAR"/"$TOURNAMENT"/tours/*) fi for dir in "${tour_dirs[@]}"; do number=$(printf "%01g" ${dir:(-2)}) # 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 --re-interval \ '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