Was wir haben:Wie Parts Teilstrings mit Leerzeichen in Shell-Variablen in bash?
In einem previous question wurden die folgenden Musterlinien ein Muster in bash zu erkennen vorgeschlagen passenden und Extrakt Teile dieser Linie in Shell-Variablen:
re='^\[([[:digit:]:]+)\] \[Server thread/INFO\]: ([^[:space:]]+) entered area ~ ([^[:space:]]+) - [(]PvP[)] ~'
line='[18:51:10] [Server thread/INFO]: Tester121 entered area ~ Wilderness - (PvP) ~'
if [[ $line =~ $re ]]; then
time=${BASH_REMATCH[1]}
player=${BASH_REMATCH[2]}
area=${BASH_REMATCH[3]}
fi
jedoch Dieser Code funktioniert nicht mit einer anderen Stelle, an der der übereinstimmende Inhalt Leerzeichen enthalten kann. Betrachten Sie das folgende weniger vereinfachte Format:
re='???'
line='[19:27:14] [Server thread/INFO]: Tester121 entered area ~ City - Leader Tester777 - (No PvP) ~'
if [[ $line =~ $re ]]; then
time=${BASH_REMATCH[1]}
player=${BASH_REMATCH[2]}
area=${BASH_REMATCH[3]}
#leader="Tester777"
leader=${BASH_REMATCH[4]}
#pvp="No PvP"
pvp=${BASH_REMATCH[5]}
fi
Was sollte die re
für sie sein? Ich bin neu in Regex und versuche zu lernen.
Es wäre ideal zu zeigen, was Sie versucht haben - also nicht nur ein 're = ???' Platzhalter, sondern speziell Ihr eigener Versuch, die Regex zu erweitern. –
... übrigens, ich habe versucht, den Titel zu aktualisieren, um zu unterscheiden, wie sich diese Frage von der letzten unterscheidet. –