আমার কাছে খুব দীর্ঘ লগ ফাইল রয়েছে, গ্রেপকে কেবল প্রথম 10 লাইন অনুসন্ধান করতে বলা সম্ভব?
আমার কাছে খুব দীর্ঘ লগ ফাইল রয়েছে, গ্রেপকে কেবল প্রথম 10 লাইন অনুসন্ধান করতে বলা সম্ভব?
উত্তর:
পাইপের যাদু;
head -10 log.txt | grep <whatever>
head log.txt | grep <whatever>
-l
বিকল্প ব্যবহার করার সময় কি এটি করার কোনও উপায় আছে ? আমি প্রথম পাঁচটি অক্ষর সমস্ত ফাইল তালিকাবদ্ধ করতে চাই RIFFD
।
লোকেরা যারা গুগলে এটি সন্ধান করে তাদের n
জন্য আমার একাধিক ফাইলের প্রথম লাইনগুলি অনুসন্ধান করা দরকার , তবে কেবলমাত্র মিলে যাওয়া ফাইলের নামগুলি মুদ্রণের জন্য। আমি ব্যবহার করতাম
gawk 'FNR>10 {nextfile} /pattern/ { print FILENAME ; nextfile }' filenames
FNR..nextfile
স্টপ 10 টি লাইন একবার একটি ফাইল প্রক্রিয়াকরণের দেখা হয়েছে। //..{}
কপি করে প্রিন্ট ফাইলের নাম এবং প্যাচসমূহ যখনই কোনো নির্দিষ্ট ফাইলের শো আপ প্রথম ম্যাচ। অন্যান্য প্রোগ্রামগুলির সুবিধার জন্য ফাইলের নামগুলি উদ্ধৃত করতে, ব্যবহার করুন
gawk 'FNR>10 {nextfile} /pattern/ { print "\"" FILENAME "\"" ; nextfile }' filenames
FNR=1
শুধু 1 ম লাইন অনুসন্ধান করবে। ধন্যবাদ!
find ./path -type -f -exec awk 'FNR>10 {nextfile} /pattern/ { print FILENAME ; nextfile }' '{}' +
-type f
বা awk
একক প্রক্রিয়া ছাড়া ব্যবহার করুন |
:
awk '/your_regexp/ && NR < 11' INPUTFILE
প্রতিটি লাইনে, যদি your_regexp
ম্যাচ হয়, এবং রেকর্ডের সংখ্যা (লাইন) 11 এর চেয়ে কম হয়, এটি ডিফল্ট ক্রিয়া সম্পাদন করে (যা ইনপুট লাইনটি মুদ্রণ করছে)।
বা ব্যবহার করুন sed
:
sed -n '/your_regexp/p;10q' INPUTFILE
আপনার রেজিপেক্সটি পরীক্ষা করে এবং লাইনটি -n
মুদ্রণ করে (এর অর্থ ইনপুটটি প্রিন্ট করবেন না, যা অন্যথায় পূর্বনির্ধারিত), এবং 10 তম লাইনের পরে প্রস্থান করে।
awk '{ if ( NR <= 10 ) { if( $0 ~ "YOUR_REGEXP") { print } } else { exit; } }' textfile
আছে।
awkish
। 2xifs
এবং 1xelse
কোনও কমান্ডে যার কোনও ক্রিয়া বিবৃতি দরকার নেই আহো করবে। ওয়েইনবার্গার এবং কর্নিগান কান্না ...
আপনার সাথে প্রোগ্রামগুলি ব্যবহার করে কয়েকটি বিকল্প রয়েছে grep
। আমার মতে সবচেয়ে সহজটি হ'ল ব্যবহার করা head
:
head -n10 filename | grep ...
head
প্রথম 10 লাইন আউটপুট আসবে ( -n
বিকল্পটি ব্যবহার করে ), এবং তারপরে আপনি সেই আউটপুটটি পাইপ করতে পারবেন grep
।
head
ব্যবহার করেছেন -n 10
(আমি সহ) যে বুঝতে না head
দ্বারা ডিফল্ট প্রদর্শন মাত্র 10 লাইন । :)
grep "pattern" <(head -n 10 filename)
আপনি নিম্নলিখিত লাইনটি ব্যবহার করতে পারেন:
head -n 10 /path/to/file | grep [...]
এটি সম্পাদন করার জন্য আউটপুটটি head -10 file
পাইপ করা যেতে পারে grep
:
head -10 file | grep …
পার্ল ব্যবহার:
perl -ne 'last if $. > 10; print if /pattern/' file
head -10 log.txt | grep -A 2 -B 2 pattern_to_search
-A 2
: প্যাটার্নের আগে দুটি লাইন মুদ্রণ করুন।
-B 2
: প্যাটার্ন পরে দুটি লাইন মুদ্রণ।
head -10 log.txt # read the first 10 lines of the file.
-C 2
তবে একই -A 2 -B 2
grep -m6 "string" cov.txt
এটি কেবল প্রথম 6 টি লাইন অনুসন্ধান করে string
জোয়াকিম Isaksson এর উত্তর করার জন্য একটি এক্সটেনশন: প্রায়ই আমি একটি দীর্ঘ ফাইল মাঝখানে কাছ থেকে কিছু, যেমন লাইন 5001 5020 থেকে যে ক্ষেত্রে আপনি একত্রিত করতে পারেন প্রয়োজন, head
সঙ্গে tail
:
head -5020 file.txt | tail -20 | grep x
এটি প্রথম 5020 লাইন পেয়েছে, তারপরে কেবলমাত্র শেষ 20 দেখায়, তারপরে সমস্ত কিছু গ্রেপ করার জন্য পাইপ দেয়।
(সম্পাদিত: আমার উদাহরণ সংখ্যায় ফেন্সপোস্ট ত্রুটি, গ্রেপের সাথে পাইপ যুক্ত করা হয়েছে)
গ্রেপ -A 10 <প্যাটার্ন>
এটি হ'ল প্যাটার্নটি এবং প্যাটার্নের পরে পরবর্তী 10 লাইন। এটি শুধুমাত্র একটি পরিচিত প্যাটার্নের জন্য ভাল কাজ করবে, যদি আপনার পরিচিত প্যাটার্নটি "মাথা" পরামর্শ ব্যবহার না করে।
head
:someCmd | head -10