Ack grep වලට වඩා හොඳයි

ජීවිතය බෙහෙවින් සරල කරන එක් සෙවුම් උපයෝගිතා ගැන මට ඔබට පැවසීමට අවශ්‍යයි. මම සේවාදායකයට ගිය විට මට යමක් සෙවීමට අවශ්‍ය වූ විට, මම මුලින්ම කරන්නේ ack ස්ථාපනය කර ඇත්දැයි පරීක්ෂා කිරීමයි. මෙම උපයෝගීතාව grep සඳහා විශිෂ්ට ආදේශකයක් මෙන්ම යම් දුරකට find සහ wc වේ. ඇයි grep නැත්තේ? Ack සතුව පෙට්ටියෙන් පිටත වඩා හොඳ සැකසුම්, මිනිසුන්ට කියවිය හැකි විකල්ප, perl regex සහ වින්‍යාස පද්ධතියක් ඇත. ඔබ ටර්මිනලය හරහා සෙවීමට කැමති නම් (අවශ්‍ය නම්), ඔබ අනිවාර්යයෙන්ම එය උත්සාහ කළ යුතුය.

මූලික ලක්ෂණ

Ack පෙරනිමියෙන් පුනරාවර්තී වන අතර විකල්ප අඩුවෙන් ලිවීම සැමවිටම හොඳ අදහසකි.

අපට කොඩියක් භාවිතා කළ හැකිය -wවචන මායිම් වලින් (සුදු අවකාශය, slashes, ආදිය) වට වූ අපගේ රටාවේ උදාහරණයක් සෙවීමට උපයෝගීතාවයට පැවසීමට.

ack -w mysql

Ack grep වලට වඩා හොඳයි

Ack ගොනු වර්ගය අනුව සෙවීමට සහය දක්වයි. උදාහරණයක් ලෙස, json ගොනු වල මොඩියුල අනුවාදය සොයා ගනිමු.

ack --json '"version":s+"d+.d+.d+"'

Ack grep වලට වඩා හොඳයි

සහාය දක්වන ගොනු වර්ගවල සම්පූර්ණ ලැයිස්තුවක් මෙය භාවිතයෙන් බැලිය හැක:

ack --help-types

බොහෝ විට ඔබට ලොග් ගොනුවක වාක්‍ය ඛණ්ඩයක් කොපමණ වාර ගණනක් දිස් වේ දැයි ගණන් කිරීමට අවශ්‍ය වේ, උදාහරණයක් ලෙස, ස්ක්‍රිප්ටය සැකසූ දත්ත කොපමණ දැයි තේරුම් ගැනීමට.

Ack grep වලට වඩා හොඳයි
සිද්ධිය සැලකිල්ලට නොගෙන test.log ගොනුවේ ක්‍රියාවලිය කොපමණ වාර ගණනක් සිදු වේද යන්න අපි ගණන් කරමු (-i).

අපට එක් විශේෂිත ගොනුවක පමණක් නොව සමූහයක සිදුවීම් ගණන් කළ හැකිය. mysql යන වචනය සඳහා පෙර සෙවුම අවසන් කරමු: වචන ඇති වූ ගණන ගණන් කරන්න (-එස්) *.js ගොනු (--js), කිසිවක් සොයා නොගත් ගොනු හැර (-h) සහ ප්රතිඵලය සාරාංශ කිරීම.

# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql

Ack grep වලට වඩා හොඳයි

මීට අමතරව, අපට භාවිතා කර එක් එක් ගොනුවේ ඇති සිදුවීම් ගණන පිළිබඳ සවිස්තර වාර්තාවක් ලබා ගත හැක (-l)

ack --js -w -cl mysql

Ack grep වලට වඩා හොඳයි

ඔබට ඔබගේ සෙවීම සඳහා අමතර සන්දර්භය අවශ්‍ය නම්, ඔබට ඇක් ඇසිය හැක
දක්වා රේඛා පෙන්වන්න (-B) සහ පසුව (-A) සොයාගත් ප්රකාශනයේ. මෙය සිදු කිරීම සඳහා, විකල්පයට පසුව පෙන්විය යුතු පේළි ගණන සඳහන් කළ යුතුය.

# 2 строки до 
ack --js --column -B 2 "query.once('" ./lib/

Ack grep වලට වඩා හොඳයි

# 2 строки после 
ack --js --column -A 2 "query.once('" . /lib/

Ack grep වලට වඩා හොඳයි

ඔබට දෙකම අවශ්‍ය නම්, භාවිතා කරන්න ()

ack --js --column -C 2 "query.once('" ./lib/

විකල්පයක් ද ඇත (-v) සෙවීම ප්‍රතිලෝම කිරීමට, එනම් දී ඇති රටාවක් අඩංගු නොවන රේඛා පෙන්වන්න.

සාමාන්ය ලෙස

Ack, grep මෙන් නොව, Perl අනුකූල ප්‍රකාශන භාවිතා කරයි.
මට මෙය විශාල ප්ලස් එකක්; සාමාන්‍ය ප්‍රකාශන සඳහා වෙනම වාක්‍ය ඛණ්ඩයක් මතක තබා ගැනීමට මට අවශ්‍ය නැත.

ack 'vars+adds+'

Ack grep වලට වඩා හොඳයි

වඩාත් සංකීර්ණ උදාහරණයක්

ack '*s+[vd+.d+.d+]'

Ack grep වලට වඩා හොඳයි

බොහෝ විට ඔබට ප්‍රතිඵලවල තැබීමට අවශ්‍ය වන්නේ අච්චුවට ගැලපෙන දේ පමණි. --output විකල්පය මෙහිදී උපකාරී වනු ඇත (-o)

ack -o '*s+[vd+.d+.d+]'

Ack grep වලට වඩා හොඳයි

ඊට අමතරව, වරහන් භාවිතයෙන් අපට සොයාගත් කොටස තෝරාගෙන $[group number] විචල්‍යය හරහා ප්‍රතිදානයට ප්‍රවේශ විය හැක. උදාහරණ වශයෙන්,

ack --output='version is $1' '*s+[v(d+.d+.d+)]'

Ack grep වලට වඩා හොඳයි

ඇක් ප්රයෝජනවත් විකල්ප ඇත --පරාසය-ආරම්භය и --පරාසය-අවසානය. ඔවුන් උදව් කරන විට
දත්ත ගබඩා කර ඇත්තේ එක් පේළියක නොව, බහු රේඛා ආකාරයෙන්ය.

උදාහරණයක් ලෙස, sql කේතය සහිත ගොනුවක් තිබේ

Ack grep වලට වඩා හොඳයි

තීරු නාම උපුටා ගනිමු. බ්ලොක් එකේ ආරම්භය SELECT වලින් ආරම්භ වන රේඛාවක් වන අතර අවසානය FROM වලින් ආරම්භ වන රේඛාවක් වනු ඇත.

ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql

Ack grep වලට වඩා හොඳයි

සෙවුම් ප්‍රකාශනයේ කාලපරිච්ඡේදයක්, වරහන් සහ වෙනත් විශේෂ අක්ෂර අඩංගු නම්, ඒවා භාවිතයෙන් ගැලවී නොයෑම සඳහා, ඔබට විකල්පය භාවිතා කළ හැක. -Q.

# Поиск с экранированием 
ack --json 'mysql.'    
# Поиск без экранирования
ack --json -Q mysql.

Ack grep වලට වඩා හොඳයි

ගොනු සමඟ වැඩ කිරීම

විශේෂිත දිගුවක් සහිත ගොනු ලැයිස්තුවක් ලබා ගන්න

ack -f --js

Ack grep වලට වඩා හොඳයි

විකල්පය භාවිතා කර P* වලින් ආරම්භ වන සියලුම js ගොනු සොයන්න (-g).

ack -g --js '/Pa.+.js$'

Ack grep වලට වඩා හොඳයි

වින්‍යාසය

උපයෝගීතාවයට තමන්ගේම වින්යාස ගොනුවක් ඇත. ඔබට පරිශීලකයා සඳහා ගෝලීය වින්‍යාසයක් (~/.ackrc) සහ විශේෂිත ෆෝල්ඩරයක් සඳහා දේශීය එකක් (ඔබට ෆෝල්ඩරය තුළ .ackrc ගොනුවක් සෑදිය යුතුය).

වින්‍යාසය තුළ ලියා ඇති බොහෝ විකල්ප ඇමතූ විට අතින් නියම කළ හැක. අපි ඒවායින් කිහිපයක් බලමු.

සොයන විට ෆෝල්ඩරය නොසලකා හරින්න

--ignore-dir=dist

අභිරුචි ගොනු වර්ගයක් එකතු කරමු -vue.

--type-add=vue:ext:js,vue

දැන් ඔබට ගොනු සෙවීමට --vue විකල්පය භාවිතා කළ හැක .vue. උදාහරණ වශයෙන්: ack --vue යෙදුම.
ඔබට මෙම විකල්පය සඳහා දිගු ලැයිස්තුවක් නියම කළ හැක. උදාහරණයක් ලෙස, මෙන්න, -vue භාවිතා කරන විට, පහත සඳහන් දෑ සැකසෙනු ඇත:
.js ගොනු.

ගොනු නොසලකා හරින්න, උදාහරණයක් ලෙස minified *.min.js

--ignore-file=match:/.min.js$/

ස්ථාපනය

CentOS

yum update -y && yum install ack -y

උබුන්ටු

apt-get update -y && apt-get install ack-grep -y

මැක් OS

brew update && brew install  ack

වෙබ් අඩවියෙන් ස්ථාපනය කිරීම

curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack

සංස්කාරකවරුන් සඳහා ප්ලගීන:

නිගමනය

මේ සියලු හැකියාවන් නොවේ. සම්පූර්ණ කාර්යයන් ලැයිස්තුව ධාවනය කිරීමෙන් නැරඹිය හැකිය:

ack –-help
# или
ack --man

පර්යන්තයේ සෙවීම වඩාත් පහසු සහ නම්‍යශීලී කිරීමට ඇක් උපයෝගිතා ඔබට ඉඩ සලසයි. සහ නල මාර්ගය භාවිතා කිරීම (ack -C 10 හලෝ | ack ලෝකය) ඔබට ගොනු පද්ධතියේ සහ ගොනු තුළම දත්ත සෙවීම සහ පෙරීම සඳහා බලවත් සංයෝජනයක් නිර්මාණය කළ හැකිය.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න