গ্রেপ আউটপুটে ফাইলের নাম এবং লাইন নম্বর দেখান


87

আমি গ্রেপ ব্যবহার করে আমার রেল ডিরেক্টরি অনুসন্ধান করার চেষ্টা করছি। আমি একটি নির্দিষ্ট শব্দ খুঁজছি এবং আমি ফাইলের নাম এবং লাইন নম্বর মুদ্রণের জন্য গ্রেপ করতে চাই।

এমন কোনও গ্রেপ পতাকা রয়েছে যা আমার জন্য এটি করবে? আমি একটি সংমিশ্রণটি ব্যবহার করার চেষ্টা করছি -nএবং -lতবে এটি হয় নাম্বার না দিয়ে ফাইলের নামগুলি মুদ্রণ করছে বা টার্মিনালে প্রচুর পাঠ্য ছড়িয়ে দিচ্ছে যা সহজেই পড়া যায় না।

প্রাক্তন:

  grep -ln "search" *

আমার কি এটিকে জাগানোর জন্য পাইপ লাগাতে হবে?


উত্তর:


140

আমি মনে করি -lএটি খুব সীমাবদ্ধ কারণ এটি এর আউটপুটকে দমন করে -n। আমি প্রস্তাব দেব -H( --with-filename): প্রতিটি ম্যাচের জন্য ফাইলের নাম মুদ্রণ করুন।

grep -Hn "search" *

যদি এটি খুব বেশি আউটপুট দেয় তবে -oমেলে এমন অংশটি কেবল মুদ্রণ করার চেষ্টা করুন ।

grep -nHo "search" * 

এই উত্তরটি আমার জন্যও কার্যকর হয়েছিল। আমি পুনরাবৃত্তভাবে অনুসন্ধানের প্রয়োজন ছিল এবং এই উদাহরণ কমান্ডটি ব্যবহার করেছি: গ্রেপ -হ্নোর "লোকালহোস্ট"। এই ফাইলের নাম এবং লাইন নম্বর, সংক্ষিপ্ত এবং সংক্ষিপ্ত সহ সমস্ত মিল খুঁজে বের করে।
টোর অরস্টাদ

এটি ফলাফল প্রদর্শন করে এবং কেবল ফাইলের নাম এবং লাইন নম্বর নয়
এলি

30
grep -rin searchstring * | cut -d: -f1-2

এটি বলবে, পুনরাবৃত্তভাবে অনুসন্ধান করুন ( searchstringউদাহরণস্বরূপ স্ট্রিংয়ের জন্য ), কেস উপেক্ষা করে লাইন সংখ্যা প্রদর্শন করুন। এই গ্রেপ থেকে আউটপুট এমন কিছু দেখবে:

/path/to/result/file.name:100: Line in file where 'searchstring' is found.

এরপরে আমরা কাট কমান্ডের ফলাফলটি পাইপ করি যা :আমাদের ফিল্ড ডিলিমিটার হিসাবে কলোন ব্যবহার করে এবং 1 থেকে 2 ক্ষেত্র প্রদর্শন করে।

যখন আমার প্রায়শই আমি ব্যবহৃত লাইন নম্বরগুলির প্রয়োজন হয় না -f1(কেবলমাত্র ফাইলের নাম এবং পাথ) এবং তারপরে আউটপুটটি পাইপ uniqকরি, যাতে আমি কেবলমাত্র প্রতিটি ফাইলের নাম একবার দেখতে পাই:

grep -ir searchstring * | cut -d: -f1 | uniq

4
আমি মনে করি এটি সেরা প্রশ্নের মূল উত্তর দেয় best কেবল ফাইলের নাম এবং লাইন নম্বর।
মাস্তাব্লাস্টা

4
মনে রাখবেন যে আপনার যদি উইন্ডোজের absolute C: \ ব্যবহারকারীগণ \ me \ git` এর মতো নিখুঁত পথের নাম থাকে তবে এর মধ্যে ইতিমধ্যে একটি কোলন রয়েছে this
20:34

19

আমি ব্যবহার করতে পছন্দ:

grep -niro 'searchstring' <path>

তবে এটি কেবল কারণ আমি সর্বদা অন্যান্য উপায়গুলি ভুলে যাই এবং আমি কোনও কারণে রবার্ট ডি grep -নিরোকে ভুলতে পারি না :)


আমি কখনই ভাবিনি যে আমি উপরেরগুলির জন্য উত্স পেতে পারি। শুধু একটি মজাদার ভাগ। ধন্যবাদ! (তবে এটি সত্যই কার্যকর হয় - কমপক্ষে ম্যাকোএসে)
বাস ভ্যান ওমেন

আপনার এই মনে রাখার উপায় ভালবাসা!
গ্রেগ হিলস্টন

1

@ টোরআরস্টাডের মন্তব্যটি বানানযুক্ত হতে পারে grep -Horn 'search' ./, যা মনে রাখা সহজ।

grep -HEroine 'search' ./ কাজ করতে পারে;)

কৌতূহলের জন্য:

$ grep --help | grep -Ee '-[HEroine],'
  -E, --extended-regexp     PATTERNS are extended regular expressions
  -e, --regexp=PATTERNS     use PATTERNS for matching
  -i, --ignore-case         ignore case distinctions
  -n, --line-number         print line number with output lines
  -H, --with-filename       print file name with output lines
  -o, --only-matching       show only nonempty parts of lines that match
  -r, --recursive           like --directories=recurse

0

এখানে স্ট্রিংযুক্ত ফোর্টরান ফাইলগুলি খুঁজে পেতে একটি গাছ অনুসন্ধান করার জন্য আমি কীভাবে উত্তোলিত উত্তরটি ব্যবহার করেছি:

find . -name "*.f" -exec grep -nHo the_string {} \;

এনএইচও ছাড়া আপনি কেবল শিখেছেন যে কোনও কোনও ফাইল কোথাও স্ট্রিংয়ের সাথে মেলে।

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