Я намагаюся витягнути два числових значення з рядка і призначити їх змінним за допомогою 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
. Чи є ще щось, що можливо?
Зауважте, що читабельність насправді не є проблемою, а лише довжиною.