গ্রেপ আউটপুট থেকে পাঠ্যের খুব দীর্ঘ লাইন রয়েছে এমন ফাইলগুলি বাদ দিন


18

আমি প্রায়শই আমার কোডে জিনিসগুলি খুঁজে পেতে গ্রেপ কমান্ডগুলি চালিত করি তবে ওয়েব প্রকল্পগুলির সাথে সমস্যাটি হ'ল প্রায়শই সঙ্কুচিত জাভাস্ক্রিপ্ট এবং সিএসএস ফাইল থাকবে যা একটি বিশাল পাঠ্য তৈরি করে, যাতে কোনও মিল খুঁজে পাওয়া গেলে পুরো টার্মিনাল উইন্ডোটি হয় আরও 1000 টি লাইনের জন্য ভরাট, যা আমি সন্ধান করছি তা খুঁজে পাওয়া অত্যন্ত চর্চা করে না।

সুতরাং 200 অক্ষরের উপরে পাঠ্যগুলির একক লাইন বলে যে ফাইলগুলি এড়ানোর কোনও উপায় আছে?

উত্তর:


20

GNU গ্রেপ এবং xargs সহ:

grep -rLZE '.{200}' . | xargs -r0 grep pattern

বিকল্পভাবে, আপনি গ্রেপের আউটপুট কেটে ফেলতে পারেন:

grep -r pattern . | cut -c1-"$COLUMNS"

বা আপনার টার্মিনালটিকে এটি সমর্থন করে যদি পাঠ্য মোড়ানো না করতে বলুন:

tput rmam
grep -r pattern .

বা ব্যবহার less -S

grep -r pattern . | less -S

3
আপনার প্রথম উদাহরণ থেকে রেজেক্স ব্যবহার করে, বিপরীত ম্যাচ দিয়ে গ্রেপে পাইপিং করা ... | grep -v -E '.{200}', খুব কার্যকর। উদাহরণস্বরূপ, বর্তমান dir এর অধীনে * .js ফাইলগুলির সমস্ত লাইন সন্ধান করতে "। নেম" দিয়ে সেগুলিতে যা 200 অক্ষরের বেশি নয়: find . -name "*.js" -exec grep -H \\.name {} \; | grep -v -E '.{200}'
গ্যারি এস ওয়েইয়ার

3

বিকল্প 1: আপনি একটি নির্দিষ্ট প্যাটার্নের সাথে মিলে যাওয়া ফাইলগুলি বাদ দিতে পারেন:

grep --exclude='*.min.*'

এটি বাদ দেয় script.min.jsএবং style.min.css... অন্যান্য grepবিকল্পের মধ্যে রয়েছে --exclude-from=FILEএবং--exclude-dir=DIR

বিকল্প 2: আমি এটি ব্যবহারিক কিনা তা নিশ্চিত নই তবে আপনি cutপ্রতিটি লাইনের প্রথম 200 টি অক্ষর এবং তারপরে grepসেগুলি করতে পারেন:

grep -H [OPTIONS] PATTERN [FILE...] | cut -c1-200 | grep PATTERN

প্রথমটি grepপ্রাথমিক ম্যাচ করে এবং ফাইলের নাম এবং লাইন আউটপুট দেয়, দ্বিতীয়টি লাইনগুলি বেঁধে দেওয়ার PATTERNপরেও সেখানে রয়েছে তা নিশ্চিত করে cut


2

এই ধরণের পরিস্থিতিতে আমি আশেপাশের প্রসঙ্গে একটি প্যাটার্ন গ্রেপ করতে চাই (30 টি অক্ষর বলতে দিন):

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