Я пытаюсь извлечь два числовых значения из строки и назначить их переменным с помощью awk
( gawk
это то, что я использую специально). Я хочу извлечь старшие и младшие номера версий из строки версии tmux в awk
переменные, например:
- вход
tmux 2.8
:;maj == 2
а такжеmin == 8
- вход
tmux 1.9a
:;maj == 1
а такжеmin == 9
- вход
tmux 2.10
:;maj == 2
а такжеmin == 10
Предполагая, что мой вклад поступил от tmux -V
stdin, в настоящее время у меня есть следующее:
tmux -V | awk '{
maj = +gensub(/([0-9]+)\..*/, "\\1", "g", $2);
min = +gensub(/.*\.([0-9]+).*/, "\\1", "g", $2);
# ...do something with maj and min...
}'
Это работает, но, как знают многие пользователи tmux, использование if-shell
в .tmux.conf
файле (где я надеюсь использовать этот материал) может легко привести к очень длинным строкам в файле конфигурации, поэтому мне интересно, есть ли способ объединить эти две переменные присваивания в одном операторе для экономии места ... или любой другой способ извлечь эти две переменные из ввода и сэкономить место.
Я думаю о чем-то вроде:
awk '{ maj, min = +gensub(/([0-9]+)\.([0-9]+).*/, "\\1 \\2", "g", $2); }'
... вроде как в Python, но этот конкретный синтаксис не существует в awk
. Есть ли что-нибудь еще, что возможно?
Обратите внимание, что читаемость на самом деле не проблема, просто длина.