-
Notifications
You must be signed in to change notification settings - Fork 0
/
split-data.sh
39 lines (33 loc) · 1.05 KB
/
split-data.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#! /bin/bash
set -euo pipefail
# Join array of strings into a string using a separator.
# NOTE: the array to be joined is passed to the function by name (not by value)
# Usage: a=(1 2 3); run.join_array '|' a # <- 'a' is a name, not value of 'a'
# Result: 1|2|3
join_array() {
local IFS="$1"; shift
local arg1="$1[@]"
local -a list=("${!arg1}")
echo "${list[*]}"
}
data_file='../cards/2021-07-180944-ThompsonPark-WhiteTees-UDisc.csv'
output=${data_file##*/}
output=${output%.csv}
mkdir -p "${output:?}"
rm -fr "${output:?}"/*
# shellcheck disable=SC2002
cat "$data_file" | {
read -r header
echo "$header" >&2
IFS=','
while read -ra data; do
save_to="$output/${data[3]}.csv"
echo "$save_to" >&2
if [[ ! -f "$save_to" ]]; then
echo "$header" > "$save_to"
fi
join_array ',' data >> "$save_to"
done
}
# CSV header:
# PlayerName,CourseName,LayoutName,Date,Total,+/-,Hole1,Hole2,Hole3,Hole4,Hole5,Hole6,Hole7,Hole8,Hole9,Hole10,Hole11,Hole12,Hole13,Hole14,Hole15,Hole16,Hole17,Hole18