getline ফাংশন এবং এর প্রয়োগ
AWK তে getline ফাংশন একটি শক্তিশালী টুল, যা ফাইল থেকে বা স্ট্যান্ডার্ড ইনপুট থেকে সরাসরি একটি লাইন পড়তে ব্যবহৃত হয়। এটি ব্যবহার করে ইনপুট প্রসেসিং আরও বেশি কাস্টমাইজ করা যায়। AWK এর সাধারণ প্রক্রিয়াকরণ মডেল অনুযায়ী প্রতিটি রেকর্ড স্বয়ংক্রিয়ভাবে প্রসেস করা হলেও, getline ব্যবহারকারীদের ম্যানুয়ালি একটি লাইন পড়ার ক্ষমতা দেয়।
getline ফাংশনের ব্যবহার
getline ফাংশন বিভিন্ন উপায়ে ব্যবহার করা যায়:
একটি লাইন পড়া এবং প্রসেস করা:
awk '{ line = $0 # বর্তমান লাইনের জন্য print line # প্রিন্ট করা getline # পরবর্তী লাইন পড়া print "Next Line:", $0 }' data.txtএই উদাহরণে,
getlineবর্তমান লাইনের পরবর্তী লাইন পড়ে এবং সেটিকে প্রিন্ট করে।একটি নির্দিষ্ট ফাইল থেকে লাইন পড়া:
awk 'BEGIN { while ((getline line < "input.txt") > 0) { print line } }'এখানে,
input.txtফাইল থেকে এক এক করে প্রতিটি লাইন পড়ে এবং প্রিন্ট করা হয়।ভেরিয়েবলে লাইন পড়া এবং সংরক্ষণ করা:
awk '{ count += 1 if (getline line < "additional.txt") > 0) { print "Line from data.txt:", $0 print "Line from additional.txt:", line } }' data.txtএই উদাহরণে,
data.txtফাইল থেকে বর্তমান লাইন পড়ার পরadditional.txtফাইল থেকে একটি লাইন পড়া হয় এবং দুটোই প্রিন্ট করা হয়।
getline ফাংশনের রিটার্ন ভ্যালু
- 1: যদি
getlineসফলভাবে একটি লাইন পড়ে। - 0: যদি EOF (End of File) পৌঁছে যায়।
- -1: যদি কোনো ত্রুটি ঘটে (যেমন ফাইলটি পড়ার সময় কোনো সমস্যা)।
উদাহরণ:
awk 'BEGIN {
if ((getline < "nonexistent.txt") < 0) {
print "Error reading file!"
}
}'getline এর ব্যবহারিক প্রয়োগ
একাধিক ইনপুট ফাইল পড়া:
awk '{ print "From main input:", $0 if (getline line < "secondary.txt") > 0) { print "From secondary file:", line } }' primary.txtএখানে,
primary.txtথেকে একটি লাইন পড়ার পরsecondary.txtথেকে একটি লাইন পড়া হয়।শর্তাধীন লাইনে যাওয়া:
awk '{ if ($1 == "START") { getline # "START" লাইনের পরের লাইন সরাসরি পড়ে print "Next line after START:", $0 } }' input.txtএখানে, যদি প্রথম ফিল্ডটি "START" হয়, তবে
getlineব্যবহার করে পরবর্তী লাইন পড়া এবং প্রিন্ট করা হয়।
সতর্কতা
getlineব্যবহার করার সময় সতর্কতা অবলম্বন করা উচিত, কারণ এটি AWK এর স্বাভাবিক ফিল্ড এবং রেকর্ড প্রসেসিং লজিক পরিবর্তন করতে পারে।getlineফাংশন যদি ভুলভাবে ব্যবহৃত হয়, তবে এটি প্রোগ্রামকে জটিল করে তুলতে পারে এবং অনাকাঙ্ক্ষিত আচরণ সৃষ্টি করতে পারে।
সারসংক্ষেপ
AWK এর getline ফাংশন ব্যবহার করে ইনপুট পড়ার প্রক্রিয়াকে আরও নমনীয় ও কাস্টমাইজ করা যায়। এটি ব্যবহারকারীদের নির্দিষ্ট শর্তে ইনপুট পড়া, ফাইল থেকে একাধিক লাইন পড়া, এবং ম্যানুয়ালি ইনপুট হ্যান্ডল করার ক্ষমতা দেয়। তবে getline ব্যবহারের সময় সতর্ক থাকা গুরুত্বপূর্ণ, কারণ এটি AWK এর স্বাভাবিক প্রক্রিয়াকরণ লজিক পরিবর্তন করতে পারে।
Read more