Я пытаюсь извлечь два числовых значения из строки и назначить их переменным с помощью 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 -Vstdin, в настоящее время у меня есть следующее:
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. Есть ли что-нибудь еще, что возможно?
Обратите внимание, что читаемость на самом деле не проблема, просто длина.