লিনাক্স "ক্যাট" কমান্ডের সাহায্যে আমি কীভাবে সংখ্যা অনুসারে নির্দিষ্ট কিছু লাইন প্রদর্শন করব


59

আমি যদি cat -n text.txtস্বয়ংক্রিয়ভাবে লাইনগুলি সংখ্যায়িত করতে ব্যবহার করি তবে আমি কীভাবে কেবলমাত্র কয়েকটি নির্দিষ্ট রেখা প্রদর্শন করতে আদেশটি ব্যবহার করব।


1
"কেবলমাত্র কয়েকটি নির্দিষ্ট রেখা দেখান" দিয়ে আপনি কী বোঝাতে চাইছেন, আপনি কি একটি প্রত্যাশিত আউটপুট রাখতে পারেন?
টাকোমি

1
এটি করার সম্ভবত এক মিলিয়ন উপায় হতে চলেছে। tail+ headএটিও করতে পারে, পারেawk
ব্র্যাচলে

উত্তর:


120

ব্যবহার 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

27

এটি করার একটি উপায় হ'ল sed:

cat -n text.txt | sed '11d'

যেখানে আপনি মুছে ফেলতে চান সেই লাইনের সংখ্যা 11।

বা 11 ব্যতীত সমস্ত অপসারণ করতে:

cat -n text.txt | sed '11!d'

ব্যাপ্তিগুলিও সম্ভব:

cat -n text.txt | sed '9,12!d'

এবং cat -nএমনকি প্রয়োজন হয় না:

sed '9,12!d' text.txt

9

আপনি সোজা আপ ব্যবহার করতে পারেন।

awk 'NR==1' file.txt

'1' কে কাঙ্ক্ষিত লাইন নম্বর দিয়ে প্রতিস্থাপন করা হচ্ছে।


1
এটি মিলিয়ন মাইল দূরে এখানে সেরা উত্তর এবং এর চেয়ে অনেক বেশি ভালবাসার দাবি রাখে।
Wren

8

লক্ষ্যগুলির উপর নির্ভর করে আমি মাথা বা গ্রেপ পছন্দ করি

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যদিও উদাহরণের প্রয়োজন নেই
রোয়াইমা

1
হ্যাঁ ... তবে .... তবে .... ..... আরও ভাল উপায় আছে। প্রশ্নটি যদিও বিড়াল ব্যবহার সম্পর্কে জিজ্ঞাসা করেছিল, তাই আমি এটি ব্যবহার করেছি।
কোটায়ার

catওপি যা চায় তা করতে পারে না
রোয়াইমা

2

অন্যরা যেমন আপনাকে দেখিয়েছে, ব্যবহার করার দরকার নেই 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.