search - grep একটি ফাইল, কিন্তু বিভিন্ন পার্শ্ববর্তী লাইন প্রদর্শন?




logging command-line-interface (6)

ripgrep

আপনি যদি কর্মক্ষমতা সম্পর্কে ripgrep , ripgrep ব্যবহার ripgrep যা grep তে অনুরূপ সিনট্যাক্স রয়েছে, উদাহরণস্বরূপ

rg -C5 "pattern" .

-C , --context NUM - প্রতিটি মিলের আগে এবং পরে NUM লাইন দেখান।

যেমন -A / -A --before-context --after-context এবং -B / --before-context হিসাবে পরামিতি আছে।

টুলটি রাস্তার রেজেক্স ইঞ্জিনের উপরে নির্মিত হয়েছে যা এটি বড় ডেটাতে খুব efficient করে তোলে।

আমি একটি স্ট্রিং জন্য grep চাই, কিন্তু পূর্ববর্তী পাঁচটি লাইন এবং নিম্নলিখিত পাঁচ লাইন পাশাপাশি মিলিত লাইন প্রদর্শন। আমি কিভাবে এটা করতে সক্ষম হবে?


"/Some/file.txt" -এ "17655" অনুসন্ধান করুন এবং আগে (পরে Awk ব্যবহার করে) 10 লাইনের প্রসঙ্গ দেখায়, আউটপুটটি একটি কোলন অনুসরণ করে লাইন নম্বরের সাথে পূর্ববর্তী। Solaris এ এটি ব্যবহার করুন যখন 'grep' "- [ACB]" বিকল্পগুলিকে সমর্থন করে না।

awk '

/17655/ {
        for (i = (b + 1) % 10; i != b; i = (i + 1) % 10) {
                print before[i]
        }
        print (NR ":" ($0))
        a = 10
}

a-- > 0 {
        print (NR ":" ($0))
}

{
        before[b] = (NR ":" ($0))
        b = (b + 1) % 10
}' /some/file.txt;

grep হিসাবে একই আর্গুমেন্ট সঙ্গে ack কাজ করে, এবং গ্রহণ- -C । কিন্তু কোডের মাধ্যমে অনুসন্ধানের জন্য এটি সাধারণত ভাল।


আমি সাধারণত ব্যবহার

grep searchstring file -C n # n for number of lines of context up and down

Grep মত সরঞ্জাম অনেক সত্যিই মহান মানুষ ফাইল আছে। আমি নিজেকে grep এর ম্যান পৃষ্ঠাটির উল্লেখ করছি কারণ আপনি এটির সাথে অনেক কিছু করতে পারেন।

man grep

অনেক GNU সরঞ্জামগুলির একটি তথ্য পৃষ্ঠা রয়েছে যা ম্যান পৃষ্ঠা ছাড়াও আরও দরকারী তথ্য থাকতে পারে।

info grep

-A এবং -B কাজ করবে, যেমন- -C n (প্রসঙ্গের n লাইনের জন্য), অথবা কেবল -n (প্রসঙ্গের রেখার জন্য)।


বিএসডি বা জিএনইউ grep আপনি -B num ব্যবহার করতে পারেন ম্যাচটি থেকে কত লাইন এবং মিলের পরে লাইনের সংখ্যাটির জন্য একটি সংখ্যা।

grep -B 3 -A 2 foo README.txt

আপনি যদি -C num ব্যবহার করতে পারেন আগে এবং পরে লাইনে একই সংখ্যা চান।

grep -C 3 foo README.txt

এই 3 লাইন আগে এবং 3 লাইন পরে দেখাবে।








command-line-interface