#!/bin/bash RESULTS_PATH=$1 main() { if [ $# -eq 0 ]; then help; exit 1 fi case "$1" in -h|--help) help; exit ;; esac if [[ ! -d "$RESULTS_PATH" ]]; then echo "error: invalid results path" exit 1 fi aggregate_files } aggregate_files() { OUTPUT="" HEADER_INSERTED=false while IFS= read -r -d '' ENTRY do if [ $HEADER_INSERTED == true ]; then FILE=$(tail -n +2 "$ENTRY") else FILE=$(cat "$ENTRY") fi OUTPUT+="$FILE\n" HEADER_INSERTED=true done < <(find "$RESULTS_PATH" -name '*.csv' -maxdepth 1 -type f -print0) HEADER=$(echo -e "$OUTPUT" | head -n 1) ALL_ROWS=$(echo -e "$OUTPUT" | tail -n +2 | sort -t$'\t' -k6,6 -n) STRATS=$(echo -e "$ALL_ROWS" | awk -F '\t' '{print $5}' | sort | uniq) OUTPUT="" while read -r STRAT; do [ -z "$STRAT" ] && continue ROWS=$(echo -e "$ALL_ROWS" | grep -P "\t$STRAT\t") OUTPUT+="$ROWS\n" done <<< "$STRATS" OUTPUT=$(echo -e "$HEADER\n$OUTPUT" | head -n -1) echo -e "$OUTPUT" > "$RESULTS_PATH/data.csv" } help() { cat << EOF usage: $0 RESULTS-DIR Aggregate data from search stragey benchmark Options: -h, --help Show this message EOF } main "$@"