J'essaie de tirer deux valeurs numériques d'une chaîne et de les affecter à des variables à l'aide awk
( gawk
c'est ce que j'utilise spécifiquement). Je veux extraire les numéros de version majeurs et mineurs d'une chaîne de version tmux dans des awk
variables, par exemple:
- entrée
tmux 2.8
:;maj == 2
etmin == 8
- entrée
tmux 1.9a
:;maj == 1
etmin == 9
- entrée
tmux 2.10
:;maj == 2
etmin == 10
En supposant que mon entrée provient de tmux -V
stdin, j'ai actuellement les éléments suivants:
tmux -V | awk '{
maj = +gensub(/([0-9]+)\..*/, "\\1", "g", $2);
min = +gensub(/.*\.([0-9]+).*/, "\\1", "g", $2);
# ...do something with maj and min...
}'
Cela fonctionne, mais comme de nombreux utilisateurs de tmux le savent, l'utilisation if-shell
dans le .tmux.conf
fichier (où j'espère utiliser ce genre de choses) peut facilement conduire à de très longues lignes dans le fichier de configuration, donc je me demande s'il existe un moyen de combiner ces deux variables affectations en une seule instruction pour économiser de l'espace ... ou de toute autre manière pour glaner ces deux variables de l'entrée et économiser de l'espace.
Je pense à quelque chose comme:
awk '{ maj, min = +gensub(/([0-9]+)\.([0-9]+).*/, "\\1 \\2", "g", $2); }'
... un peu comme en Python, mais cette syntaxe particulière n'existe pas dans awk
. Y a-t-il autre chose possible?
Notez que la lisibilité n'est pas vraiment un problème, juste la longueur.