জিএনইউ গ্রেপ ব্যবহার করে কীভাবে আমি ম্যাচগুলি হাইলাইট করতে পারি?


18

আমি কিছু লিনাক্সে দেখেছি, grepএটি ম্যাচটি হাইলাইট করার জন্য এবং মেলানো ফাইলটি মুদ্রণের জন্য কনফিগার করা হয়েছে।

আমি grepমিলগুলি হাইলাইট করার জন্য কীভাবে কনফিগার করব ?

উত্তর:


10
alias cgrep='grep -nR --color'

ব্যবহার:

$ cgrep somestring /path/to/dir/or/file/with*/possible/*wild.card

এছাড়াও আমার প্রিয় একটি:

$ pgrep some-hanging-process

প্রক্রিয়াগুলির সমস্ত পিডগুলি তালিকাবদ্ধ করবে যা কিছু ঝুলন্ত-প্রক্রিয়ার নামের সাথে মেলে যা আপনি নিম্নলিখিত পরিস্থিতিতে ব্যবহার করতে পারেন:

$ kill $(pgrep some-hanging-process)


1
GNU- র সাম্প্রতিক সংস্করণগুলির সাথে grep, grep -rসাধারণত grep -Rপূর্বের প্রতিযোগিতাগুলি অতিক্রম না করাকে পছন্দ করা উচিত ।
স্টাফেন চেজেলাস

19

আমি দেখেছি যে,, grep কুটনি করার সেরা উপায় ব্যবহার করা ACK , যা একটি বুদ্ধিমান বাতিলের তালিকায় সঙ্গে মূলত রিকার্সিভ, grep হয়, রঙ ফলাফল হাইলাইট এবং (যেমন, ডিরেক্টরি .svn অনুসন্ধান নয়, ব্যাকআপ ফাইল, ইত্যাদি উপেক্ষা করে) পার্ল regexps। আপনি গ্রেপ সময়ের 98.6% কাজটি করতে চান এটি এটি।


5
এসি উল্লেখের জন্য +1 পৃষ্ঠায়িত ফলাফলের জন্য হাইলাইটিং বজায় রাখার জন্য --pager = "কম -আর" বিকল্পটি অন্তর্ভুক্ত করতে ভুলবেন না। উবুন্টুতে, "এসিসি" নেওয়া হওয়ার কারণে এটি "আক্ক-গ্রেপ" হিসাবে উল্লেখ করা যেতে পারে mentioning
শান চিন

আমিও
এসিসি

2
যেহেতু এস্কি কেবল একটি পার্ল স্ক্রিপ্ট, আপনি যে কোনও জায়গায় পার্ল ইনস্টল করেছেন এটি যে কোনও জায়গায় উপলভ্য করতে পারেন, এটি কোনও উচ্চ বার নয়।
কাই

আক্কটি অফ-অফ-বক্স-ডিফল্টগুলির জন্য ভাল তবে আপনি যখন এসিসি ইনস্টল করতে সময় নেবেন তখন আপনি গ্রেপের জন্য কিছু ডিফল্ট কনফিগার করতে পারেন - আমার পৃষ্ঠায় অন্য উত্তরটি দেখুন। আমি এটি 1980 এর দশকে একবার করেছিলাম এবং তারপরে গ্রেপ এসি-র সবকটি কাজ করে। (কেবল গ্রিপ আসলে দ্রুততর, এসি এর বিপরীতে উচ্চস্বরে দাবি করা সত্ত্বেও)
জোনাথন হার্টলে

7

আমি এটিকে আমার .bashrc এ সেট করে রেখেছি, একটি উপনাম ব্যবহার করে গ্রেপকে নতুন করে সংজ্ঞায়িত করার পরিবর্তে:

    export GREP_OPTIONS="--color=auto"

আমার জন্য, এটি লিনাক্স, ম্যাকসএক্সএক্স এবং ফ্রিবিএসডি-তে কাজ করে।


GREP_OPTIONSক্ষতিকারক বিবেচনা করা উচিত। আমি aliasপরিবর্তে ব্যবহার করার পরামর্শ দিচ্ছি । এখানে দেখুন: বাগস.লঞ্চপ্যাড.এন.বুন্টু
+

আমি সম্মত হই যে GREP_OPTIONS নির্দিষ্ট স্ক্রিপ্টগুলিতে সমস্যা হতে পারে। তবে আমি বাগ 14 67১৪১ তে যুক্তি অনুসারে , জিআরইপি_অপশনগুলি ব্যবহারকারীকে বিভিন্ন ধরণের গ্রেপ (গ্রেপ, এগ্রিরিপ, এফগ্রিপ, আরগ্রিপ, জিগ্রিপ, বিজগ্রিপ, বিজেফগ্রিপ, বিজেগ্রিপ, ইত্যাদি) জন্য একটি বিকল্প সেট করার অনুমতি দেয়, অন্যদিকে একটি উপকরণ সেট করতে হবে প্রতিটি আকারের * গ্রেপ এবং বিভিন্ন ধরণের গ্রেপ রয়েছে।
স্টিফান লাসিউইস্কি

আমি কয়েক বছর ধরে (জি, নয় দশক) জিআরপি_অপশন ব্যবহার করতাম তবে এতে যে ক্ষতির সৃষ্টি হয় তা খুব আসল। যে কোনও সরঞ্জাম যা এই এনভির ভার সেট সহ গ্রেপ করতে অনুরোধ করে তা আপনার পরিবর্তিত ডিফল্ট আচরণের উত্তরাধিকারী হবে এবং এটি সেই সরঞ্জামগুলিকে ভেঙে ফেলবে। পরিবর্তে কোনও উপাধি বা এক্সিকিউটেবল র‍্যাপার স্ক্রিপ্ট সংজ্ঞায়িত করে এই সমস্যাটিকে সম্পূর্ণ এড়িয়ে চলুন।
জোনাথন হার্টলে

স্ক্রিপ্টগুলি অবশ্যই তাদের পরিবেশকে স্যানিটাইজ করতে হবে । কোনও আইএফ, বুট বা হোয়েভার অনুমোদিত নয়। সময়কাল। (হ্যাঁ, এটি নীচের পিছনে একটি রাজকীয় ব্যথা ...)।
ভনব্র্যান্ড

3

আমি পরিবেশের পরিবর্তনশীল GREP_OPTIONS এড়ানো পরামর্শ দিচ্ছি, এটি গ্রেপের প্রতিটি অনুরোধকে প্রভাবিত করবে, এমনকি অন্যান্য সরঞ্জামগুলির মধ্যে এম্বেড থাকা। যদি সেই সরঞ্জামগুলি গ্রিপকে একভাবে আচরণ করার প্রত্যাশা করে এবং আপনি সেই আচরণটি পরিবর্তন করেন তবে এটি সেই সরঞ্জামগুলি ভেঙে ফেলবে does

পরিবর্তে, আপনি একটি উপনাম তৈরি করতে পারেন, যা ভাল কাজ করে। এটি কেবলমাত্র আপনার ইন্টারেক্টিভ শেল থেকে গ্রেপ করার কলগুলিকে প্রভাবিত করবে (যেমন আপনি নিজের টাইপ করেন)।

চূড়ান্ত বিকল্পটি, যা আমি সবচেয়ে বেশি পছন্দ করি তা হ'ল একটি র‌্যাপার স্ক্রিপ্ট তৈরি করা যা গ্রেপকে অনুরোধ করে। আমি এটি একটি উপনামের চেয়ে বেশি পছন্দ করি কারণ আমি অন্যান্য প্রোগ্রাম থেকে এই মোড়কে ডাকতে পারি। উদাহরণস্বরূপ vimgrep সেট করে ভিমে, যাতে আমার ভিএম এর মধ্যে থেকে অনুসন্ধানগুলি কমান্ড-লাইনের অনুসন্ধানগুলিতে অনুরূপ আচরণ করে।

$ cat `which grp`
#!/usr/bin/env bash
grep -rI --color --exclude-dir=\.bzr --exclude-dir=\.git --exclude-dir=\.hg --exclude-dir=\.svn --exclude-dir=build --exclude-dir=dist --exclude=tags $*

এটি ব্যবহার করে আহ্বান করুন:

$ grp pattern dir

যেমন

$ grp pattern .

বর্তমান দির এবং সাবডিয়ার্সের সমস্ত পাঠ্য ফাইলগুলিতে 'প্যাটার্ন' এর উদাহরণ অনুসন্ধান করবে।

লক্ষ্য করুন যে আমি আমার স্ক্রিপ্টটিকে 'গ্রেপ' ছায়ার চেয়ে 'গ্রিপ' বলি, যাতে আমি নিজের কাস্টমাইজড ডিফল্টগুলি দিয়ে গ্রেপকে ডাকছি কিনা তা আমি সর্বদা সচেতন।

ডিফল্টরূপে আমি অন্তর্ভুক্ত:

-r : search subdirs recursive
-I : skip binary files
--color : highlight matches in color
--exclude-dir : skip specified directories and their subdirs
--exclude : skip specified files

আমি মনে করি সবাই সোর্স কন্ট্রোল ডায়ারগুলি এড়িয়ে যেতে চাইবে: .hg .git .bzr .svn

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

'ট্যাগস' ctags এর আউটপুট, যা আমি 'ফাংশন সংজ্ঞাতে যান' এবং ভিএম এর মতো সরঞ্জামগুলিতে ব্যবহার করি। যেমন এটিতে আমার উত্স কোড থেকে প্রতিটি শব্দের কমপক্ষে একটি অনুলিপি এবং চিহ্ন রয়েছে, সুতরাং এটি আপনার অনুসন্ধান ফলাফল থেকে এড়িয়ে চলে worth

"$ *" শেষে "এবং কমান্ড-লাইন থেকে সমস্ত অন্যান্য প্যারাম" এর জন্য বাশ সিনট্যাক্স রয়েছে, যাতে আপনি সাধারণ হিসাবে সন্ধান করতে প্যাটার্নটি পেরিয়ে যেতে পারেন এবং আপনি যে কোনও কমান্ড লাইনের ফ্ল্যাগগুলি ওভাররাইড করতে পারেন ।


2

--colorবিকল্প ইতিমধ্যে বেশ কয়েকবার উল্লেখ করা হয়েছে, কিন্তু আমি যোগ করতে এটি রঙ যা ম্যাচ একটি পরিবেশ পরিবর্তনশীল ব্যবহার তুলে ধরা হবে কনফিগার করতে সম্ভব চাই

export GREP_COLOR="1;33"

রেফারেন্সের জন্য রঙটি এএনএসআই রঙ কোড ব্যবহার করে এনকোড করা উচিত

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

1
GREP_COLORঅবচয় করা হয়। GREP_COLORSপরিবর্তে ব্যবহার করুন।
g33kz0r

2

যেহেতু আমি আসলে রঙ সেট করার কোনও উদাহরণ দেখতে পাইনি, তাই এখানে জিএনইউ গ্রেপের জন্য একটি সহজ সেটআপ রয়েছে:

# turn on colors, natch.
export GREP_OPTIONS="--color=auto"

if [[ $(echotc Co) -ge 256 ]]; then
  # 256 color terminals
  export GREP_COLORS="mt=38;5;118:sl=:cx=:fn=38;5;18:ln=1;30:bn=37:se=30"
else
  # everybody else
  export GREP_COLORS="mt=31:sl=:cx=:fn=34:ln=1;30:bn=30:se=30"
fi

সম্পর্কে সাবধান GREP_OPTIONS; এটির মতো জিনিস ব্যতীত অন্য কোনও কিছুর জন্য ব্যবহার করবেন না --color=autoবা এটি আপনার সিস্টেমে গ্রেপ ব্যবহার করা কোনও স্ক্রিপ্টগুলিকে বিশৃঙ্খলা করবে।

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