ট্র্যাক
/
AWK
AWK
/
অনুশীলনী
/
সরল রিপোর্ট
সরল রিপোর্ট

সরল রিপোর্ট

লার্নিং অনুশীলনী

ভূমিকা

সংখ্যা ও স্ট্রিং

AWK খুবই ছোট একটি ভাষা এবং এতে মাত্র কয়েকটি মৌলিক ডেটা টাইপ আছে। এই পাঠে আমরা সংখ্যা ও স্ট্রিং নিয়ে আলোচনা করব।

সংখ্যা

AWK-তে সংখ্যাগুলো ডাবল-প্রেসিশন ফ্লোটিং পয়েন্ট সংখ্যা হিসেবে বাস্তবায়িত হয়। ইন্টিজার, ফ্লোট আর ডাবল, এদের মধ্যে কোনো পার্থক্য নেই।

AWK অক্টাল সংখ্যা কনস্ট্যান্ট (0 দিয়ে শুরু) এবং হেক্সাডেসিমাল সংখ্যা কনস্ট্যান্ট (0x বা 0X দিয়ে শুরু) বুঝতে পারে।

সংখ্যাগত অপারেশন

আপনি সাধারণ গাণিতিক অপারেটর +, -, *, /, % ব্যবহার করতে পারেন। সূচক অপারেটর হলো ^। কিছু বিল্ট-ইন সংখ্যাগত ফাংশনও আছে, যার মধ্যে আছে ত্রিকোণমিতিক ফাংশন, র‍্যান্ডম সংখ্যা তৈরি, এবং x ও শূন্যের মধ্যবর্তী নিকটতম পূর্ণসংখ্যায় একটি সংখ্যাকে ছেঁটে ফেলার জন্য int(x)।

স্ট্রিং

AWK-এর স্ট্রিং হলো ক্যারেক্টারের ক্রম। ডাবল কোট ব্যবহার করে একটি স্ট্রিং কনস্ট্যান্ট উল্লেখ করুন।

স্ট্রিং অপারেশন

এখানে মাত্র একটি স্ট্রিং অপারেশন আছে: কনক্যাটেনেশন। কনক্যাটেনেশনের জন্য আলাদা কোনো অপারেটর নেই; দুটি স্ট্রিং পাশাপাশি বসালেই সেগুলো কনক্যাটেনেট হয়ে যায়:

BEGIN {
    hw = "Hello" "World"
    print hw
}
# => HelloWorld
Note

print একটি স্টেটমেন্ট, কোনো ফাংশন নয়। print-এ বন্ধনী লাগে না।

AWK-তে স্ট্রিং ম্যানিপুলেশনের প্রচুর ফাংশন রয়েছে। ট্র্যাকের মধ্য দিয়ে এগোতে এগোতে আমরা সেগুলোর সাথে গভীরভাবে পরিচিত হব।

সংখ্যা ও স্ট্রিংয়ের মধ্যে রূপান্তর

সংখ্যা ও স্ট্রিংয়ের মধ্যে রূপান্তরের জন্য কোনো স্পষ্ট অপারেটর নেই। প্রোগ্রামের প্রেক্ষাপট অনুযায়ী AWK নিজে থেকেই এটি করে দেবে। এতে ইনপুট ফিল্ডের মান নিয়ে কাজ করা খুব সহজ হয়ে যায়: AWK সাধারণত আপনি যা করতে চান সেটিই করে দেয়।

  • + সংখ্যাগত অপারেশনের কারণে print x + y x ও y ভ্যারিয়েবলের মানকে সংখ্যায় রূপান্তর করবে।
  • কনক্যাটেনেশন অপারেশনের কারণে print x y x ও y ভ্যারিয়েবলের মানকে স্ট্রিংয়ে রূপান্তর করবে।

আপনি যদি এটি স্পষ্টভাবে করতে চান, 0 + x দিলে x-এর সংখ্যা রূপ পাওয়া যায় এবং "" x দিলে x-এর স্ট্রিং রূপ পাওয়া যায়।

স্ট্রিং থেকে সংখ্যায়

AWK যে পদ্ধতিতে একটি স্ট্রিংকে সংখ্যায় রূপান্তর করে, তা বিভ্রান্তিকর হতে পারে। সহজভাবে ভাবলে, AWK একটি স্ট্রিংয়ের শুরু থেকে "সংখ্যার ক্যারেক্টার" পড়তে থাকে যতক্ষণ না কোনো "সংখ্যা নয়" এমন ক্যারেক্টার পায়। কিছু উদাহরণ হলো:

  • "2.5" সংখ্যা 2.5-এ রূপান্তরিত হয়;
  • "1e3" সংখ্যা 1000-এ রূপান্তরিত হয় (বৈজ্ঞানিক নোটেশন);
  • "456abc" সংখ্যা 456-এ রূপান্তরিত হয় (কারণ a কোনো সংখ্যা নয়, রূপান্তর সেখানেই থেমে যায়)।
  • "abc789" সংখ্যা 0-এ রূপান্তরিত হয় (স্ট্রিংয়ের শুরুতে কোনো সংখ্যা নেই)।

নির্দেশনা

আপনি আপনার এক বন্ধুকে তার বাগানের বিভিন্ন কোণ থেকে নেওয়া রিডিংগুলো দিয়ে একটি রিপোর্ট তৈরি করতে সাহায্য করছেন। দুর্ভাগ্যবশত, আপনার বন্ধু ডেটাগুলো খুবই অদ্ভুত এক ফরম্যাটে রেখেছেন। প্রতিটি রিডিং কমা দিয়ে আলাদা করা কয়েকটি ফিল্ডের একটি সেট। কিন্তু তিনি দুই অঙ্কের সংখ্যাগুলো দুটি আলাদা কলামে ভাগ করে রেখেছেন।

ফিল্ড নম্বর অর্থ
1 আইডি নম্বর
2 অবস্থান
3 প্রথম রিডিং, দশকের মান
4 প্রথম রিডিং, এককের মান
5 দ্বিতীয় রিডিং, দশকের মান
6 দ্বিতীয় রিডিং, এককের মান

101,house,4,2,5,4 এর মতো একটি ইনপুট সারির ক্ষেত্রে

  • প্রথম রিডিং হলো 42,
  • দ্বিতীয় রিডিং হলো 54.

কাজ ১: রিপোর্টটি তৈরি করুন

আপনার কাজ হলো দুটি রিডিংয়ের গড় বের করা এবং নিচের ফরম্যাটে প্রতিটি সারির ফলাফল আউটপুট করা।

#<id>, <label> = <average>

যেহেতু 42 ও 54-এর গড় 48, তাই নমুনা সারিটির আউটপুট হওয়া উচিত:

#101, house = 48
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
AWK Exercism

সরল রিপোর্ট শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, AWK ট্র্যাকের 3টি কনসেপ্ট92টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।