awk - কোনও ফাইলের প্রথম এন লাইনের জন্য অক্ষরের সংখ্যা কীভাবে প্রিন্ট করা যায়?


10

আমার একটি আদেশ আছে:

$ awk '{ print length($0); }' /etc/passwd

এটি একটি পাসডাব্লু ফাইলে প্রতিটি লাইনের অক্ষরের সংখ্যা মুদ্রণ করে :

52
52
61
48
81
58
etc.

কেবলমাত্র প্রথম এন লাইনের জন্য আমি কীভাবে অক্ষরের সংখ্যা মুদ্রণ করতে পারি?

উদাহরণস্বরূপ - প্রথম 3 লাইনের জন্য এটি এমন কিছু দেবে:

52
52
61

@ ইলক্কাচু সত্য।
njzk2

যদি আপনি ফাঁকা উপেক্ষা করতে চান তবে নীচে ব্যবহার করুন - awk '(NR<=line) && length($0) {print length($0)}' line=3 file
ভিপিন কুমার

উত্তর:


17

awkপর্যাপ্ত লাইনগুলি পড়ার পরে ছেড়ে দিতে বলুন :

awk '$0 = length; NR==3 { exit }' /etc/passwd

নোট করুন যে এই সমাধানটি খালি লাইনগুলিকে উপেক্ষা করে, যদিও লাইন গণনার জন্য নয়।


কৌতুকময় এবং শীতল! (+1)

2
যদি কোনও বা লাইনগুলি খালি থাকে তবে অ্যাসাইনমেন্টটি শূন্যের (একটি মিথ্যা মান) মূল্যায়ন করে এবং দৈর্ঘ্য মুদ্রণ করা হবে না।
ilkkachu

@ ইল্কাচ্চু: পরিস্থিতির উপর নির্ভর করে খালি লাইন উপেক্ষা করা যুক্তিসঙ্গত হবে। আমি এই সম্পর্কে একটি নোট যুক্ত করেছি।
থার

14

ডাইরেক্ট আওক সংস্করণ (@ থোরের মতো দক্ষ নয়) তবে কিছুটা আরও স্পষ্ট:

awk 'NR <= 3 {print length}' /etc/passwd

3
যদি এটি হয় awk '{ print length } NR>=3 { exit }' /etc/passwd, আমি এটি upvote হবে।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

3
@ ডেনিস উইলিয়ামসন, আপনাকে ধন্যবাদ এটি একটি খুব ভাল পরামর্শ, আমি এটি আমার উত্তরে অন্তর্ভুক্ত করব না কারণ এটি থোরের প্রস্তাবনায় ইতিমধ্যে অন্তর্নিহিত।

5

আপনি awkকেবলমাত্র কমান্ড দিয়ে এটি সম্পাদন করতে পারেন, @ থোর, এবং @ জাজো দ্বারা সুন্দরভাবে বর্ণিত (আমার কাছ থেকে +1)

নীচে বর্ণিত লাইনের সংখ্যা অনুসারে আপনি একত্রিত করতে পারেন awkএবং headপ্যারামিটার সহ -n:

এই আদেশটি কার্যকর করার জন্য @ মারলিনের পরামর্শের জন্য ধন্যবাদ: head | awk

যেমন আপনি প্রথম 3 লাইন ব্যবহার করে পাবেন:

head -n3 /etc/passwd | awk '{ print length($0); }' 

মাথা মানুষ

-n, --lines=[-]K
    print the first K lines instead of the first 10; with the leading '-', print all but the last K lines of each file 

@ msjavx86 - দুর্দান্ত :) দয়া করে উত্তরটি গ্রহণ করুন, আপনি যখন এটি করতে সক্ষম হবেন
ইয়ারন

অবশ্যই আমি করব - প্রায় 10 মিনিটের মধ্যে;) আবারও ধন্যবাদ!
bambosze_babuni

8
এমনকি head -n3 /etc/passwd | awkবিপরীতও হতে পারে, তাই অ্যাডকে পুরো ফাইলটি প্রক্রিয়া করতে হবে না।
মার্লিন

1
AWK লাইন গণনা করতে পারে, প্রয়োজন নেই head
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

@ ডেনিসউইলিইমসন - মন্তব্যের জন্য ধন্যবাদ, headপ্রথম কাজ সমাধানটি আমার মনে এসেছিল তা ব্যবহার করে came আমি @ থোর, @ জাজো উত্তরকে উত্সাহিত করেছি যা awkকেবলমাত্র সমাধান ব্যবহার করে ।
ইয়ারন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.