#!/usr/bin/env bash createScoreboardHeader() { printf "%25s %8s %8s %8s %8s %8s\n" "Name" "Kill" "FF" "Death" "Respawn" echo "---------------------------------------------------------------------------" } createScoreboard() { NAME="$1" FILE="$2" KILL=0 FF=0 DEATH=0 RESPAWN=0 #escape '[' -> somehow escapes all special chars, lol? ESC_NAME=$(echo "$NAME" | sed -r 's/[\[]+/\\[/g') while IFS= read -r line; do case "$line" in *\(WEST\)[" "]von:[" "]${ESC_NAME}[" "]\(EAST\)* | *\(EAST\)[" "]von:[" "]${ESC_NAME}[" "]\(WEST\)*) ((KILL++)) ;; *\(EAST\)[" "]von:[" "]${ESC_NAME}[" "]\(EAST\)* | *\(WEST\)[" "]von:[" "]${ESC_NAME}[" "]\(WEST\)*) ((FF++)) ;; *${ESC_NAME}[" "]*von:*) ((DEATH++)) ;; *Spieler:*${ESC_NAME}*) ((RESPAWN++)) ;; esac done < <(grep -- "${ESC_NAME}" ${FILE}) #echo {\"name\":\"$NAME\", \"kill\":${KILL}, \"ff\":${FF}, \"death\":${DEATH}, \"respawn\":${RESPAWN}}, if [[ $NAME =~ [^[:space:]] ]]; then printf "%25s %8s %8s %8s %8s %8s\n" "$NAME" $KILL $FF $DEATH $RESPAWN fi } FILE="$1" PLAYERS=() while IFS='' read -r line || [[ -n "$line" ]]; do if [[ $line =~ [^[:space:]] ]]; then case "$line" in *"TFAR_RadioRequestEvent"*) RES=$(echo "$(grep -oP ':[0-9]+\s\(\K.*?(?=\)\sREMOTE)' <<< "$line")") ;; *"Respawn"*) RES=$(echo "$(grep -oP '\|\|\sSpieler:\s\K.*?(?=\s-\sKosten:)' <<< "$line")") ;; *"Abschuss"*) RES=$(echo "$(grep -oP '\|\|\s\K.*?(?=\s\((EAST|WEST|CIV))' <<< "$line")") RES1=$(echo "$(grep -oP 'von:\s\K.*?(?=\s\((EAST|WEST|CIV))' <<< "$line")") ;; esac if [[ $RES =~ [^[:space:]] && " ${PLAYERS[*]} " != *" $RES "* ]]; then PLAYERS+=("$RES") fi if [[ $RES1 =~ [^[:space:]] && " ${PLAYERS[*]} " != *" $RES1 "* ]]; then PLAYERS+=("$RES1") fi fi done < ${FILE} createScoreboardHeader for i in "${PLAYERS[@]}" do : createScoreboard "$i" ${FILE} done