Estoy tratando de extraer dos valores numéricos de una cadena y asignarlos a variables usando awk
( gawk
es lo que estoy usando específicamente). Quiero extraer los números de versión mayor y menor de una cadena de versión tmux en awk
variables, por ejemplo:
- entrada
tmux 2.8
:;maj == 2
ymin == 8
- entrada
tmux 1.9a
:;maj == 1
ymin == 9
- entrada
tmux 2.10
:;maj == 2
ymin == 10
Suponiendo que mi entrada proviene de tmux -V
stdin, actualmente tengo lo siguiente:
tmux -V | awk '{
maj = +gensub(/([0-9]+)\..*/, "\\1", "g", $2);
min = +gensub(/.*\.([0-9]+).*/, "\\1", "g", $2);
# ...do something with maj and min...
}'
Esto funciona, pero como muchos usuarios de tmux saben, usar if-shell
en el .tmux.conf
archivo (donde espero usar esto) puede conducir fácilmente a líneas realmente largas en el archivo de configuración, por lo que me pregunto si hay una manera de combinar estas dos variables asignaciones en una declaración para ahorrar espacio ... o cualquier otra forma de recoger estas dos variables de la entrada y ahorrar espacio.
Estoy pensando en algo como:
awk '{ maj, min = +gensub(/([0-9]+)\.([0-9]+).*/, "\\1 \\2", "g", $2); }'
... algo así como en Python, pero esa sintaxis particular no existe en awk
. ¿Hay algo más que sea posible?
Tenga en cuenta que la legibilidad no es realmente una preocupación, solo la longitud.