Ich versuche, zwei numerische Werte aus einer Zeichenfolge zu ziehen und sie mithilfe von Variablen zuzuweisen awk
( gawk
was ich speziell verwende). Ich möchte die Haupt- und Nebenversionsnummern aus einer tmux-Versionszeichenfolge in awk
Variablen ziehen, z.
- Eingabe :
tmux 2.8
;maj == 2
undmin == 8
- Eingabe :
tmux 1.9a
;maj == 1
undmin == 9
- Eingabe :
tmux 2.10
;maj == 2
undmin == 10
Angenommen, meine Eingabe stammt von tmux -V
stdin, habe ich derzeit Folgendes:
tmux -V | awk '{
maj = +gensub(/([0-9]+)\..*/, "\\1", "g", $2);
min = +gensub(/.*\.([0-9]+).*/, "\\1", "g", $2);
# ...do something with maj and min...
}'
Dies funktioniert, aber wie viele Benutzer von tmux wissen, kann die Verwendung if-shell
in der .tmux.conf
Datei (wo ich dieses Zeug verwenden möchte ) leicht zu sehr langen Zeilen in der Konfigurationsdatei führen. Daher frage ich mich, ob es eine Möglichkeit gibt, diese beiden Variablen zu kombinieren Zuweisungen in eine Anweisung, um Platz zu sparen ... oder eine andere Möglichkeit, diese beiden Variablen aus der Eingabe zu entnehmen und Platz zu sparen.
Ich denke an etwas wie:
awk '{ maj, min = +gensub(/([0-9]+)\.([0-9]+).*/, "\\1 \\2", "g", $2); }'
... ähnlich wie in Python, aber diese spezielle Syntax existiert in nicht awk
. Gibt es noch etwas, das möglich ist?
Beachten Sie, dass die Lesbarkeit nicht wirklich ein Problem ist, sondern nur die Länge.