VÄlos pastÄstÄ«t par vienu meklÄÅ”anas rÄ«ku, kas ļoti atvieglo dzÄ«vi. Kad es nonÄku serverÄ« un man kaut kas jÄpameklÄ, es vispirms pÄrbaudu, vai ir instalÄts ack. Å is rÄ«ks ir lieliska grep aizstÄjÄja, kÄ arÄ« noteiktÄ mÄrÄ find un wc. KÄpÄc ne grep? Ack piedÄvÄ patÄ«kamÄkus noklusÄjuma iestatÄ«jumus, cilvÄkam lasÄmÄkas opcijas, perl regulÄrÄs izteiksmes un konfigurÄcijas sistÄmu. Ja jums patÄ«k (vai ir jÄsper) meklÄt caur terminÄli, noteikti ir vÄrts to izmÄÄ£inÄt.
Pamati
Ack pÄc noklusÄjuma ir rekurss, un rakstÄ«t mazÄk opciju vienmÄr ir labi.
MÄs varam izmantot karogu -w, lai pateiktu rÄ«kam meklÄt mÅ«su parauga eksemplÄru, ko ierobežo vÄrdu robežas (burtiskie simboli, slÄ«psvÄ«tras u.tml.).
ack -w mysql
Ack atbalsta meklÄÅ”anu pÄc failu tipiem. PiemÄram, meklÄsim moduļa versiju json failos.
ack --json '"version":s+"d+.d+.d+"'
Pilnu atbalstīto failu tipu sarakstu var apskatīt, izmantojot:
ack --help-typesBieži ir jÄskaita, cik reizes frÄze sastopama žurnÄlfailÄ, piemÄram, lai saprastu, cik daudz datu skripts apstrÄdÄja.
![]()
SaskaitÄ«sim, cik reizes process sastopams failÄ test.log, ignorÄjot reÄ£istru (-i).
MÄs varam skaitÄ«t ieejas ne tikai vienÄ konkrÄtÄ failÄ, bet arÄ« grupÄ. Uzlabosim iepriekÅ”Äjo meklÄjumu, tÄpÄc saskaitÄ«sim vÄrda mysql parÄdīŔanÄs reizes: (-c) *.js failos (--js), izÅemot failus, kuros nekÄ nav atrasts (-h) un apkopojoÅ”o kopsummu.
# Š²ŃŠ²ŠµŠ“ем на ŃŠŗŃан Š²Ńе вŃ
ожГениŃ
ack --js -w mysql
# ŃŃŠøŃаем обŃŃŃ ŃŃŠ¼Š¼Ń вŃ
ожГений
ack --js -wch mysql
TurklÄt mÄs varam saÅemt detalizÄtu ziÅojumu par parÄdīŔanÄs skaitu katrÄ failÄ, izmantojot (-l)
ack --js -w -cl mysql
Ja jums ir nepiecieÅ”ams papildus konteksts meklÄÅ”anai, varat lÅ«gt ack
parÄdÄ«t rindas pirms (-B) un pÄc (-A) atrastÄ izteiciena. Lai to izdarÄ«tu, jÄnorÄda skaits rindu, kuras jÄparÄda pÄc opcijas.
# 2 ŃŃŃŠ¾ŠŗŠø Го
ack --js --column -B 2 "query.once('" ./lib/
# 2 ŃŃŃŠ¾ŠŗŠø ŠæŠ¾ŃŠ»Šµ
ack --js --column -A 2 "query.once('" . /lib/
Un ja nepiecieŔams gan viens, gan otrs, lietojiet (-C)
ack --js --column -C 2 "query.once('" . /lib/TÄpat ir opcija (-v) meklÄÅ”anas inversijai, t.i., parÄdÄ«t rindas, kurÄs nav noteiktÄ parauga.
RegulÄrÄs izteiksmes
Ack, atŔķirÄ«bÄ no grep, izmanto Perl saderÄ«gas izteiksmes.
Man tas ir liels pluss, jo nav jÄatceras atseviŔķa sinatxse regulÄrajÄm izteiksmÄm.
ack 'vars+adds+'
SarežģītÄks piemÄrs
ack '*s+[vd+.d+.d+]'
Bieži vien gribas rezultÄtos atstÄt tikai to, kas atbilst paraugam. Å eit palÄ«dzÄt var opcija --output (-o)
ack -o '*s+[vd+.d+.d+]'
Papildus tam, izmantojot apaļas iekavas, mÄs varam izcelt atrasto daļu un piekļūt tai output caur mainÄ«go $[grupas numurs]. PiemÄram,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack piedÄvÄ noderÄ«gas iespÄjas ārange-start un ārange-end. TÄs palÄ«dz, kad
dati netiek glabÄti vienÄ rindÄ, bet gan daudzrindÄs.
PiemÄram, ir fails ar SQL kodu

Izvilksim kolonnu nosaukumus. Bloka sÄkums bÅ«s rinda, kas sÄkas ar SELECT, bet beigas rinda, kas sÄkas ar FROM.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Ja meklÄÅ”anas izteiksmÄ ir iekļauti speciÄli simboli, piemÄram, punkts, apaÄ¼Ä iekava un citi, tad, lai tos neekrÄnÄtu ar , var izmantot opciju -Q.
# ŠŠ¾ŠøŃŠŗ Ń ŃŠŗŃŠ°Š½ŠøŃŠ¾Š²Š°Š½ŠøŠµŠ¼
ack --json 'mysql.'
# ŠŠ¾ŠøŃŠŗ без ŃŠŗŃŠ°Š½ŠøŃŠ¾Š²Š°Š½ŠøŃ
ack --json -Q mysql.
Darbs ar failiem
IegÅ«t failu sarakstu ar noteiktu paplaÅ”inÄjumu
ack -f --js
Atrast visus js failus, kuru nosaukums sÄkas ar P*, izmantojot opciju (-g).
ack -g --js '/Pa.+.js$'
KonfigurÄcija
RÄ«kam ir sava konfigurÄcijas faila. Var bÅ«t gan globÄlÄ konfigurÄcija lietotÄjam (~/.ackrc), gan lokÄlÄ konkrÄtai mapei (mapÄ nepiecieÅ”ams izveidot failu .ackrc).
LielÄkÄ daļa opciju, kas tiek norÄdÄ«tas konfigurÄcijÄs, var tikt arÄ« roku rakstÄ«ti, izsaucot. ApskatÄ«sim dažas no tÄm.
IgnorÄt mapi meklÄÅ”anÄ
--ignore-dir=distPievienosim pielÄgotu faila tipu āvue.
--type-add=vue:ext:js,vueTagad varam izmantot opciju āvue, lai meklÄtu failos .vue. PiemÄram: ack āvue App.
Å ajÄ gadÄ«jumÄ var norÄdÄ«t paplaÅ”inÄjumu sarakstu Å”ai opcijai. PiemÄram, Å”eit, izmantojot āvue, tiks apstrÄdÄti arÄ« .js faili.
ŠŠ³Š½Š¾ŃŠøŃŠ¾Š²Š°ŃŃ ŃŠ°Š¹Š»Ń, Š½Š°ŠæŃŠøŠ¼ŠµŃ, Š¼ŠøŠ½ŠøŃŠøŃŠøŃŠ¾Š²Š°Š½Š½Ńе *.min.js
--ignore-file=match:/.min.js$/UzstÄdīŔana
CentOS
yum update -y && yum install ack -yUbuntu
apt-get update -y && apt-get install ack-grep -yMac OS
brew update && brew install ackInstalÄcija no vietnes
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ackPaplaÅ”inÄjumi redaktoriem:
SecinÄjums
Tas nav viss. Pilnu funkciju sarakstu var apskatīt, izpildot:
ack --help
# vai
ack --manRÄ«ks ack ļauj meklÄÅ”anu terminÄlÄ padarÄ«t ÄrtÄku un elastÄ«gÄku. Un, izmantojot pipeline (ack -C 10 hello | ack world), var izveidot jaudÄ«gu kombajnu datu meklÄÅ”anai un filtrÄÅ”anai failu sistÄmÄ un paÅ”os failos.
Avots: habr.com
