1
Fork 0
lorchess/tour-parse

51 lines
1.4 KiB
Plaintext
Raw Normal View History

2013-10-01 10:28:23 +04:00
#!/usr/bin/env bash
2014-02-05 03:50:47 +04:00
YEAR=2014
TOURNAMENT=2-summertime
SCRIPT_PATH=`dirname $0`
2013-10-01 10:28:23 +04:00
# 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")
2013-10-01 10:28:23 +04:00
tour_dirs+=("$SCRIPT_PATH"/"$YEAR"/"$TOURNAMENT"/tours/"$number")
2013-10-01 10:28:23 +04:00
done
else
tour_dirs=("$SCRIPT_PATH"/"$YEAR"/"$TOURNAMENT"/tours/*)
2013-10-01 10:28:23 +04:00
fi
for dir in "${tour_dirs[@]}"; do
number=$(printf "%01g" ${dir:(-2)}) # remove the leading `0' if any
2013-10-01 10:28:23 +04:00
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)
2013-10-01 10:28:23 +04:00
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 \
2013-11-08 12:06:41 +04:00
'match($0, /'${date}' [-—] '${white}' '${result}' '${black}'/, a) \
{ print a[1], a[2], a[6], a[3] }') )
2013-10-01 10:28:23 +04:00
if [[ ${#data[@]} != 0 ]]; then
echo " - date: ${data[0]}"
echo " white: ${data[1]}"
echo " black: ${data[2]}"
echo " result: '${data[3]}'"
2013-10-01 10:28:23 +04:00
echo
fi
done <<< "$tour_info"
done