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
(đó gawk
là 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 awk
các biến, ví dụ:
- đầu vào :
tmux 2.8
;maj == 2
vàmin == 8
- đầu vào :
tmux 1.9a
;maj == 1
vàmin == 9
- đầu vào :
tmux 2.10
;maj == 2
vàmin == 10
Giả sử đầu vào của tôi đến từ tmux -V
trê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-shell
trong .tmux.conf
tệ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.