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 principais e secundários de uma string de versão do tmux para 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
Assumindo que minha entrada vem do 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 de tmux saber, usando if-shell
no .tmux.conf
arquivo (onde espero usar este material) pode facilmente levar a muito longas filas no arquivo de configuração, então eu 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 específica não existe awk
. Existe mais alguma coisa possível?
Observe que a legibilidade não é realmente uma preocupação, apenas o comprimento.