Tôi đang cố gắng kéo hai giá trị số ra khỏi một chuỗi và gán chúng cho các biến bằng cách sử dụng awk(đó gawklà những gì tôi đang sử dụng cụ thể). Tôi muốn kéo các số phiên bản chính và phụ ra khỏi chuỗi phiên bản tmux thành awkcác biến, ví dụ:
- đầu vào : 
tmux 2.8;maj == 2vàmin == 8 - đầu vào : 
tmux 1.9a;maj == 1vàmin == 9 - đầu vào : 
tmux 2.10;maj == 2vàmin == 10 
Giả sử đầu vào của tôi đến từ tmux -Vtrên stdin, tôi hiện có những điều sau đây:
tmux -V | awk '{
                  maj = +gensub(/([0-9]+)\..*/, "\\1", "g", $2);
                  min = +gensub(/.*\.([0-9]+).*/, "\\1", "g", $2);
                  # ...do something with maj and min...
               }'
Điều này hoạt động, nhưng như nhiều người dùng tmux biết, sử dụng if-shelltrong .tmux.conftệp (nơi tôi hy vọng sử dụng công cụ này) có thể dễ dàng dẫn đến các dòng thực sự dài trong tệp cấu hình, vì vậy tôi tự hỏi liệu có cách nào để kết hợp hai biến này không gán vào một câu lệnh để tiết kiệm không gian ... hoặc bất kỳ cách nào khác để thu thập hai biến này từ đầu vào và tiết kiệm không gian.
Tôi đang nghĩ về một cái gì đó như:
awk '{ maj, min = +gensub(/([0-9]+)\.([0-9]+).*/, "\\1 \\2", "g", $2); }'
... giống như trong Python, nhưng cú pháp cụ thể đó không tồn tại awk. Có điều gì khác có thể không?
Lưu ý rằng khả năng đọc không thực sự là một mối quan tâm, chỉ là độ dài.