ฉันพยายามดึงค่าตัวเลขสองค่าออกมาจากสตริงและกำหนดให้กับตัวแปรที่ใช้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
ไฟล์ (ซึ่งผมหวังว่าจะใช้สิ่งนี้) สามารถนำไปสู่จริงๆสายยาวในไฟล์ config ดังนั้นฉันสงสัยว่าถ้ามีวิธีที่จะรวมทั้งสองตัวแปร การมอบหมายให้เป็นคำสั่งเดียวเพื่อประหยัดพื้นที่ ... หรือวิธีอื่น ๆ ในการรวบรวมสองตัวแปรนี้จากอินพุตและประหยัดพื้นที่
ฉันกำลังคิดถึงสิ่งที่ชอบ:
awk '{ maj, min = +gensub(/([0-9]+)\.([0-9]+).*/, "\\1 \\2", "g", $2); }'
... ชนิดเช่นในหลาม awk
แต่ที่ไวยากรณ์โดยเฉพาะอย่างยิ่งไม่ได้อยู่ใน มีอะไรอีกบ้างที่เป็นไปได้?
โปรดทราบว่าการอ่านไม่ได้กังวลจริงๆเพียงแค่ความยาว