Estou tentando extrair dois valores numéricos de uma string e atribuí-los a variáveis usando awk
( gawk
é o que estou usando especificamente). Eu quero puxar os números de versão principal e secundária de uma string de versão do tmux em awk
variáveis, por exemplo:
- entrada:
tmux 2.8
;maj == 2
emin == 8
- entrada:
tmux 1.9a
;maj == 1
emin == 9
- entrada:
tmux 2.10
;maj == 2
emin == 10
Supondo que minha entrada venha de tmux -V
stdin, atualmente tenho o seguinte:
tmux -V | awk '{
maj = +gensub(/([0-9]+)\..*/, "\\1", "g", $2);
min = +gensub(/.*\.([0-9]+).*/, "\\1", "g", $2);
# ...do something with maj and min...
}'
Isso funciona, mas como muitos usuários do tmux sabem, usar if-shell
no .tmux.conf
arquivo (onde espero usar essas coisas) pode facilmente levar a linhas muito longas no arquivo de configuração, então estou querendo saber se há uma maneira de combinar essas duas variáveis atribuições em uma instrução para economizar espaço... ou qualquer outra maneira de coletar essas duas variáveis da entrada e economizar espaço.
Estou pensando em algo como:
awk '{ maj, min = +gensub(/([0-9]+)\.([0-9]+).*/, "\\1 \\2", "g", $2); }'
... como em Python, mas essa sintaxe em particular não existe em awk
. Existe alguma outra coisa que é possível?
Observe que a legibilidade não é realmente uma preocupação, apenas o comprimento.