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