Estoy tratando de extraer dos valores numéricos de una cadena y asignarlos a variables usando awk( gawkes 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 awkvariables, por ejemplo:
- entrada
tmux 2.8:;maj == 2ymin == 8 - entrada
tmux 1.9a:;maj == 1ymin == 9 - entrada
tmux 2.10:;maj == 2ymin == 10
Suponiendo que mi entrada proviene de tmux -Vstdin, 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-shellen el .tmux.confarchivo (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.