আমি যদি cat -n text.txtস্বয়ংক্রিয়ভাবে লাইনগুলি সংখ্যায়িত করতে ব্যবহার করি তবে আমি কীভাবে কেবলমাত্র কয়েকটি নির্দিষ্ট রেখা প্রদর্শন করতে আদেশটি ব্যবহার করব।
tail+ headএটিও করতে পারে, পারেawk
আমি যদি cat -n text.txtস্বয়ংক্রিয়ভাবে লাইনগুলি সংখ্যায়িত করতে ব্যবহার করি তবে আমি কীভাবে কেবলমাত্র কয়েকটি নির্দিষ্ট রেখা প্রদর্শন করতে আদেশটি ব্যবহার করব।
tail+ headএটিও করতে পারে, পারেawk
উত্তর:
ব্যবহার sed
ব্যবহার
$ cat file
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
একটি লাইন মুদ্রণ করতে (5)
$ sed -n 5p file
Line 5
একাধিক লাইন মুদ্রণ করতে (5 এবং 8)
$ sed -n -e 5p -e 8p file
Line 5
Line 8
নির্দিষ্ট পরিসীমা মুদ্রণ করতে (5 - 8)
$ sed -n 5,8p file
Line 5
Line 6
Line 7
Line 8
অন্যান্য নির্দিষ্ট রেখার সাথে পরিসীমা প্রিন্ট করতে (5 - 8 এবং 10)
$ sed -n -e 5,8p -e 10p file
Line 5
Line 6
Line 7
Line 8
Line 10
লক্ষ্যগুলির উপর নির্ভর করে আমি মাথা বা গ্রেপ পছন্দ করি
cat /var/log/syslog -n | head -n 50 | tail -n 10
50 এর মধ্য দিয়ে 41 লাইন আসবে।
অথবা
cat /var/log/syslog -n | grep " 50" -b10 -a10
th০ থেকে 60০ পর্যন্ত লাইন দেখাবে। গ্রেপ পদ্ধতিতে সমস্যাটি হ'ল লাইন নম্বরগুলির প্যাডিংয়ের জন্য আপনাকে অ্যাকাউন্টটি ব্যবহার করতে হবে (স্থানটি লক্ষ্য করুন)
উভয়ই লগ ফাইলগুলি বিশ্লেষণের জন্য বেশ কার্যকর।
catযদিও উদাহরণের প্রয়োজন নেই
catওপি যা চায় তা করতে পারে না
অন্যরা যেমন আপনাকে দেখিয়েছে, ব্যবহার করার দরকার নেই cat -n। অন্যান্য প্রোগ্রামগুলি এটি আপনার জন্য করবে। তবে, যদি আপনাকে সত্যিকার অর্থে আউটপুট বিশ্লেষণ করতে হয় cat -nএবং কেবলমাত্র নির্দিষ্ট লাইনগুলি দেখায় (উদাহরণস্বরূপ, 4-8, 12 এবং 42), আপনি এটি করতে পারেন:
$ cat -n file | awk '$1>=4 && $1<=8 || $1==12 || $1==42'
4 Line 4
5 Line 5
6 Line 6
7 Line 7
8 Line 8
12 Line 12
42 Line 42
ইন awk, $1প্রথম ক্ষেত্র, সুতরাং এই কমান্ডটি সমস্ত লাইন প্রিন্ট করে যার প্রথম ক্ষেত্রগুলি i) 4 থেকে 8 (সমেত) বা ii) 12 বা iii) 42 এর মধ্যে।
আপনি যদি cat -nফাইলটি থেকে মূল লাইনগুলি যোগ করে যোগ করা ক্ষেত্রটি সরাতে চান তবে আপনি এটি করতে পারেন:
$ cat -n file | awk '$1>=4 && $1<=8 || $1==12 || $1==42{sub(/^\s*[0-9]+\s*/,""); print}'
Line 4
Line 5
Line 6
Line 7
Line 8
Line 12
Line 42