আমি এর সাথে কিছু লাইন বের করতে চাই awk
। নিম্নলিখিত কাজটি করা কি সম্ভব:
ls -l | awk 'BEGIN FOR(i=122;i<=129;i++) FNR==i'
আমি কীভাবে 122 থেকে 129 লাইন নম্বরগুলি বিশদটি প্রদর্শন করতে পারি?
আমি এর সাথে কিছু লাইন বের করতে চাই awk
। নিম্নলিখিত কাজটি করা কি সম্ভব:
ls -l | awk 'BEGIN FOR(i=122;i<=129;i++) FNR==i'
আমি কীভাবে 122 থেকে 129 লাইন নম্বরগুলি বিশদটি প্রদর্শন করতে পারি?
উত্তর:
কীভাবে awk
কাজ করে তা আপনি বুঝতে পারেন নি । উল্লিখিত "প্রোগ্রাম" ইনপুটটির প্রতিটি লাইন (বা "রেকর্ড") এর জন্য সর্বদা একবার কার্যকর করা হয় , এর জন্য FOR
কোনও অনুরূপ নির্মাণের প্রয়োজন নেই । শুধু ব্যবহার করুন:
ভার্বোজ পদ্ধতি
ls -l | awk 'NR>=122 && NR<=129 { print }'
আরও কমপ্যাক্ট পদ্ধতি
ls -l | awk 'NR==122,NR==129'
এটির জন্য একটি পরিসর দেয় NR
যা "নম্বর রেকর্ড", সাধারণত এটি বর্তমান লাইনে awk
প্রক্রিয়াজাত হয়।
awk
যেমন টাস্ক কোড সাধারণত ls -l | awk 'NR==122,NR==129'
।
আর একটি বিকল্প পদ্ধতি হ'ল sed
:
ls -l | sed -ne '122,129p'
তবে, যদি আপনার প্রশ্ন হিসাবে বোঝা যায়, এর জন্য ওড়না ব্যবহার করা গুরুত্বপূর্ণ, জরাজমের উত্তর সম্পর্কে ম্যানটওয়ার্কের মন্তব্যে যান। যেমন উইকের ডকুমেন্টেশন বলে:
A pattern may consist of two patterns separated by a comma; in this case, the action is performed for all lines from an occurrence of the first pattern though an occurrence of the second.
আপনি যদি চান তবে আপনি আরও উন্নত শর্ত তৈরি করতে পারেন। উদাহরণ স্বরূপ:
ls -l | awk 'NR==122,/foobar/'
এটি 122 লাইনে আউটপুট শুরু করবে এবং একটি লাইনে "ফুবার" শব্দটি উপস্থিত না হওয়া অবধি চলতে থাকবে।
আপনি যদি আমাদের আসল ব্যবহারের ঘটনাটি জানান তবে আমরা উত্তরগুলির সাথে আরও ভাল সমাধান সরবরাহ করতে সহায়তা করতে পারি। আমি উদ্বিগ্ন যে এটি একটি XY সমস্যার মতো মনে হচ্ছে ।
sed
পদ্ধতিটি পরামর্শ দেব , যেহেতুsed
তার চেয়ে অনেক ছোট (এবং দ্রুত লোড হয়)awk
।