51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| YEAR=2013
 | |
| TOURNAMENT=3-autumn
 | |
| 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
 |