Grep සිට අඩු දක්වා පයිප්පයක් භාවිතා කරන විට වර්ණ ප්‍රති results ල ලබා ගැනීම


251

මම grep හි --colour විකල්පය බොහෝ දේ භාවිතා කරමි, නමුත් මම බොහෝ විට භාවිතා කරන්නේ අඩුවෙන්. Grep ප්‍රති results ල අඩු කිරීමට සහ වර්ණ ගැන්වීම තවමත් ආරක්ෂා කර ගන්නේ කෙසේද? (නැතහොත් එය කළ හැකිද?)

grep "search-string" -R * --colour | less 

සංස්කරණය කරන්න :

මම සෘජු විසඳුමක් හෝ මේ හා සමාන දෙයක් සොයමි.



මොකද කරන්නේ *? ග්‍රෙප් හි මෑන් පිටුවෙන්: *: The preceding item will be matched zero or more times.නමුත් මට තවමත් තේරෙන්නේ නැත ..! @JeremyPowell
Shayan

1
Ha ෂයාන්, මෙම නඩුවේ '*' ගොනු තර්ක සඳහා වේ. එය ඩිරෙක්ටරියේ සියලුම ගොනු වෙත විස්තාරණය කරන කවචය මඟින් සැකසෙනු ඇත. සෙවුම් දණ්ඩ උදාහරණයේ ද්විත්ව උපුටා දැක්වීම් වලින් කොටා ඇත.
නීල් ජී

Answers:


280

ඔබ සරලව ධාවනය කරන grep --colorවිට එයින් ගම්‍ය වන්නේ grep --color=autoප්‍රතිදානය පර්යන්තයක්ද යන්න සහ එමඟින් වර්ණ සක්‍රීය කරන්නේද යන්න හඳුනා ගැනීමයි. කෙසේ වෙතත්, එය පයිප්පයක් හඳුනාගත් විට එය වර්ණ ගැන්වීම අක්‍රීය කරයි. පහත විධානය:

grep --color=always -R "search string" * | less

සෑම විටම වර්ණ ගැන්වීම සක්‍රීය කර ස්වයංක්‍රීය අනාවරනය අභිබවා යනු ඇත, එවිට ඔබට වර්ණ උද්දීපනය වේ less.

සංස්කරණය කරන්න: හුදෙක් භාවිතා lessකිරීම මට ප්‍රයෝජනවත් වුවද , සමහර විට පැරණි අනුවාදයට -Rධජය වර්ණ හැසිරවීමට අවශ්‍ය වේ .


146
less -Rවර්ණ කේතීකරණය නිවැරදිව අර්ථ නිරූපණය කිරීම සඳහා ඔබ භාවිතා කළ යුතුය
එතැන් සිට

1
එය මට සාධාරණ ලෙස වැඩ කළ අතර lessඑය අනුවාදය මත රඳා පවතී.
drrlvn

1
(බලාපොරොත්තු සහිතව) ප්‍රයෝජනවත් අතිරේකයක්: මට අවශ්‍ය වූයේ සමහර තරඟ බැහැර කර වර්ණ ගැන්වීම පවත්වා ගැනීමයි, එබැවින් මම ඇත්ත වශයෙන්ම අවසන් කළෙමි grep pattern file | grep -v badpattern | grep --colour=always pattern | less -R, එය මගේ අවශ්‍යතා සපුරාලීය. (නැවතත් ස්තූතියි!)
ඕවන් බ්ලැකර්

7
ඔවුන් වර්ණ හැසිරවීමේ අංගය ක්‍රියාත්මක කළ නිසා මට විශ්වාස කළ නොහැකිය less, එබැවින් විශේෂ colorlessමෙවලමක් ලබා ගැනීමේ අවස්ථාව මග හැරුණි . නමට පමණක් එය කළ යුතුව තිබුණි! ද්විමය ලෙස ක්‍රියාත්මක වන විට මම ස්වයංක්‍රීයව -R ඉල්ලා සිටින පැච් එකක් ලිවිය යුතුය colorless.
ක්‍රිස්තියානි

2
W ඕවන් බ්ලැකර් එය අන්වර්ථයක් නොවිය හැකිය. ඔබ $LESSසකසා ඇති -R.
ග්‍රේෆේඩ්

29

ඔබට මෙය ඔබගේ .bashrcගොනුවට දැමිය හැකිය :

export GREP_OPTIONS="--color=always"

හෝ මේ වගේ අන්වර්ථයක් සාදන්න:

alias grepc="grep --color=always"

එතැන් සිට පෙන්වා ඇති පරිදි ඔබට -Rවිකල්පය භාවිතා කිරීමට අවශ්‍ය වනු ඇතless


29
අවවාදයයි!: GREP_OPTIONS = "- color = always" grep (හෝ (e | f) grep) භාවිතා කරන බොහෝ ස්ක්‍රිප්ට් බිඳ දැමිය හැකිය .
mctylr

4
ඔව්, අන්වර්ථ නාමයකට වඩා හොඳයි. ඔබ හැම විටම පිරිසිදු ලබා ගත හැක grepසමග GREP, හෝ පරයා --colorවිකල්පය තෝරාගත හැක.
asmeurer

මෙය මට වැඩ කරන්නේ නැත, අන්වර්ථය වුවද ක්‍රියා කරයි.
saeedgnu

9

මේ වගේ අවස්ථාවක, මම කැමතියි ඇත්ත වශයෙන්ම කුඩා sh ගොනු නිර්මාණය කර ඒවා පැළඳීමට /usr/local/bin.
මම සාමාන්‍යයෙන් grepපුනරාවර්තන ආකාරයෙන් භාවිතා කරමි pwd, එවිට මගේ පුද්ගලික පිටපත:

#!/bin/sh
grep --color=always -r "$@" . | less -R

ඊට පස්සෙ මම ඒක පිටපත් කළා /usr/local/bin/g(ඔව්, මම ඒක ගොඩක් පාවිච්චි කරනවා)


2
මේ වගේ දේ සඳහා ෂෙල් ශ්‍රිත පමණක් භාවිතා නොකරන්නේ ඇයි? g() { grep --color=always -r "$@" . | less -R }එක හා සමානව ක්‍රියා කරන අතර බොහෝ විට (අවම වශයෙන්) වඩා හොඳ කාර්ය සාධනයක් ලබා දෙනු ඇත.
00 දානි

1
D 00 දානි ඔව්, එය වලංගු විකල්පයක් වන අතර සමහර විට මම එය භාවිතා කරමි. මෙම අවස්ථාවේ දී, වැඩි කාලයක් ගත කරන්නේ IO තුළ වන අතර එම නිසා කාර්ය සාධනය ඉහළ නැංවිය නොහැකි බව කරුණාවෙන් සලකන්න. ඒ වෙනුවට ශ්‍රිතය පැහැදිලිව පැටවිය යුතුය
ඉසෙල්

1

කවදාවත් ෂෙල් වෙඩි භාවිතා නොකරන අන්වර්ථ “අඩු” අන්වර්ථයට වඩා හොඳය. ඔබේ .bashrcසාධාරණ ලෙස : alias less="less -r".


3
තරමක් නිවැරදි නැත. එකක් භාවිතා කිරීමට අවශ්ය දෙකම grep --color=always හා less -R. Grep එය වෙනත් ක්‍රියාවලියකට සම්බන්ධ කර ඇති බව පමණක් දන්නා බවත් --color=autoවිකල්පය වර්ණ පමණක් ප්‍රතිදානය කරන්නේද නැද්ද යන්න තීරණය කිරීම සඳහා මෙම තොරතුරු පමණක් භාවිතා කරන බවත් සලකන්න .
brandizzi

3
lessවිකල්පය -rවඩා වෙනස් බව සලකන්න -R. බොහෝ විට -Rආරක්ෂිතයි.
ක්‍රේග් මැක්වීන්

1
ඉතින් ඇයි මගේ විසඳුමට ඡන්දය දෙන්න. OP විශේෂයෙන් less'--color' විකල්පය භාවිතා කරන උදාහරණය සමඟ විශේෂයෙන් ඉල්ලයි.
not2qubit

3
අන්වර්ථයක් මෙහි නුසුදුසු ය. පරිසර විචල්‍යයකට lessසහය දක්වයි $LESS. එබැවින් අන්වර්ථයක් වෙනුවට export LESS='-R'වඩාත් සුදුසු විය හැකිය.
ග්‍රේෆේඩ්

0

මට දුවන්න ඕන

grep --color=always -R "search string" * | less - r

සමග -r පසු ධජය අඩු , මෙම ක්රියාත්මක කිරීම සඳහා.


මොකද කරන්නේ *? ග්‍රෙප් හි මෑන් පිටුවෙන්: *: The preceding item will be matched zero or more times.නමුත් මට තවමත් තේරෙන්නේ නැත ..!
ෂයාන්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.