গ্রেপ ব্যবহারের সময় লাইন নম্বর পান


360

আমি স্ট্রিংয়ের জন্য ফাইলগুলি অনুসন্ধান করতে গ্রেপ রিকার্সিভ ব্যবহার করছি, এবং সমস্ত ম্যাচযুক্ত ফাইল এবং সেই স্ট্রিংটি যুক্ত লাইনগুলি টার্মিনালে মুদ্রিত রয়েছে। তবে এই লাইনের লাইন নম্বরগুলি পাওয়া কি সম্ভব ??

উদাহরণস্বরূপ: বর্তমানে আমি যা পাই তা হ'ল /var/www/file.php: $options = "this.target"তবে আমি যা পেতে চাইছি তা হ'ল সেই স্ট্রিংটি যুক্ত লাইন নম্বরটি /var/www/file.php: 1142 $options = "this.target";কোথায় 1142থাকবে।

আমি সিঙ্কেক্সটি পুনরাবৃত্তভাবে গ্রেপ করতে ব্যবহার করছি sudo grep -r 'pattern' '/var/www/file.php'

আরও একটি প্রশ্ন হ'ল আমরা কীভাবে কোনও প্যাটার্নের সমান না হওয়ার জন্য ফলাফল পাব। সমস্ত ফাইলের মতো তবে একটি নির্দিষ্ট স্ট্রিং থাকা ফাইলগুলি কি নয়?


-V পতাকাটি এমন লাইনগুলিকে দেখায় যা মেলে না (গ্রেপ-ভি মাই টেক্সট মাইফিল.txt)
বাইকারোল

উত্তর:


546
grep -n SEARCHTERM file1 file2 ...

আমার আরও একটি দ্রুত প্রশ্ন ছিল, আমরা কীভাবে কোনও প্যাটার্নের সমান না হয়ে ফলাফল পেতে পারি। সমস্ত ফাইলের মতো তবে একটি নির্দিষ্ট স্ট্রিং থাকা ফাইলগুলি কি নয়?
সাই

5
যে কমান্ড লাইন সুইচ -v হবে। আপনি যদি 'গ্রেপ - হেল্প' চালনা করেন তবে এটি সমস্ত বিকল্প প্রদর্শন করবে
মিরো এ

56
আপনি -rএকাধিক ফাইল উল্লেখ করলে আপনার প্রয়োজন হবে না । আপনি কেবল -rডিরেক্টরিগুলি নির্দিষ্ট করতে পারেন যদি আপনার প্রয়োজন হয় ।
স্পারহক

@ জিনপল - আমি -nr এবং -n -r উভয়ের জন্য একই ফলাফল দেখতে পাচ্ছি। আপনি গ্রেপের কোন সংস্করণ ব্যবহার করছেন? $ গ্রেপ-এন-আর নাম * | wc -l 1984 $ গ্রেপ -এনআর নাম * | wc -l 1984 $ গ্রেপ-ভি গ্রেপ (বিএসডি গ্রেপ) 2.5.1-ফ্রিবিএসডি
মিরো এ।

কোড কেবল উত্তর, কোন ব্যাখ্যা। : এস
ফ্লোরিয়ান কাস্টেলাইন

148

লাইন নম্বরগুলি এর সাথে মুদ্রিত হয় grep -n:

grep -n pattern file.txt

কেবলমাত্র লাইন নম্বর পেতে (মেলানো লাইন ছাড়াই), একটি ব্যবহার করতে পারে cut:

grep -n pattern file.txt | cut -d : -f 1

লাইনস না একটি প্যাটার্ন সম্বলিত ছাপা হয় grep -v:

grep -v pattern file.txt

3
এবং শেষ মিলের লাইন নম্বর: grep -n pattern file.txt | cut -d : -f 1 | tail -1(আপনি এটি একটি ভেরিয়েবলে সংরক্ষণ করতে পারেন এবং এটি থেকে লেজ ফাইল যেমন উদাহরণস্বরূপ এটি ব্যবহার করতে পারেন)
Nux

এবং প্রতিটি স্ট্রিংয়ের শুরুতে নম্বর / কোলন মুছে ফেলতে আপনি এর মতো কিছু ব্যবহার করতে পারেন:grep -n pattern file.txt | sed 's/^[0-9][0-9]*://'
লেটব্যাকুন

24

আপনি যদি চান তবে কেবল লাইন নম্বরটি করুন:

grep -nr Pattern file.ext | gawk '{print $1}' FS=":"

উদাহরণ:

$ grep -nr 9780545460262 EXT20130410.txt | gawk '{print $1}' FS=":" 
48793
52285
54023

1
awk -F: '{print $1}'এছাড়াও কাজ করে & আপনি প্রয়োজন নেই -rযে grep(শুধুমাত্র ডিরেক্টরি যাও recursively অনুসন্ধান করা যেতে পারে) ফাইল ব্যবহার
স্টুয়ার্ট Cardall

7
grep -A20 -B20 pattern file.txt

প্যাটার্নটি সন্ধান করুন এবং প্যাটার্নের পরে এবং আগে 20 লাইন দেখান


11
এটি যা চাওয়া হয়েছিল তা মোটেই নয়।
জোনাথন রাইনহার্ট

3
এছাড়াও, -C20এটি যা চেয়েছিল তা যদি একটি সংক্ষিপ্ত সংস্করণ হয়
মার্টি নিল

0

grep -nr "অনুসন্ধান স্ট্রিং" ডিরেক্টরি

এটি আপনাকে লাইন নম্বর সহ লাইন দেয়।


0

লাইন নম্বর সহ ফলাফলগুলি প্রদর্শন করতে, আপনি এটি চেষ্টা করতে পারেন

grep -nr "word to search for" /path/to/file/file 

ফলাফলটি এরকম কিছু হওয়া উচিত:

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