Sto cercando di estrarre due valori numerici da una stringa e assegnarli alle variabili usando awk
( gawk
è quello che sto usando specificamente). Voglio estrarre i numeri di versione maggiore e minore da una stringa di versione tmux in awk
variabili, ad esempio:
- input
tmux 2.8
:;maj == 2
emin == 8
- input
tmux 1.9a
:;maj == 1
emin == 9
- input
tmux 2.10
:;maj == 2
emin == 10
Supponendo che il mio input provenga da tmux -V
stdin, al momento ho il seguente:
tmux -V | awk '{
maj = +gensub(/([0-9]+)\..*/, "\\1", "g", $2);
min = +gensub(/.*\.([0-9]+).*/, "\\1", "g", $2);
# ...do something with maj and min...
}'
Funziona, ma come molti utenti di tmux sanno, usare if-shell
nel .tmux.conf
file (dove spero di usare questa roba) può facilmente portare a righe molto lunghe nel file di configurazione, quindi mi chiedo se c'è un modo per combinare queste due variabili assegnazioni in un'istruzione per risparmiare spazio ... o in qualsiasi altro modo per raccogliere queste due variabili dall'input e risparmiare spazio.
Sto pensando a qualcosa del tipo:
awk '{ maj, min = +gensub(/([0-9]+)\.([0-9]+).*/, "\\1 \\2", "g", $2); }'
... un po 'come in Python, ma quella particolare sintassi non esiste awk
. C'è qualcos'altro che è possibile?
Nota che la leggibilità non è davvero un problema, ma solo la lunghezza.