আমি একটি স্ট্রিং থেকে দুটি সংখ্যাগত মান টানতে চেষ্টা করেছি এবং তাদের ব্যবহার করে ভেরিয়েবলগুলিকে বরাদ্দ করতে চাই awk
( gawk
যা আমি বিশেষভাবে ব্যবহার করছি)। আমি একটি টিএমউक्स সংস্করণ স্ট্রিংয়ের বাইরে মুখ্য এবং গৌণ সংস্করণ নম্বরগুলি awk
ভেরিয়েবলগুলিতে টানতে চাই , যেমন:
- ইনপুট:
tmux 2.8
;maj == 2
এবংmin == 8
- ইনপুট:
tmux 1.9a
;maj == 1
এবংmin == 9
- ইনপুট:
tmux 2.10
;maj == 2
এবংmin == 10
আমার ইনপুটটি tmux -V
স্টিডিন থেকে এসেছে বলে ধরে নিচ্ছি , আমার কাছে বর্তমানে নিম্নলিখিতগুলি রয়েছে:
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); }'
... পাইথনের মতো ধরণের, তবে সেই নির্দিষ্ট বাক্য গঠনটি বিদ্যমান নেই awk
। এমন কি আর কিছু আছে যা সম্ভব?
নোট করুন যে পাঠযোগ্যতা সত্যিকারের উদ্বেগ নয়, কেবল দৈর্ঘ্য।