Ang Ack mas maayo kay sa grep

Gusto nakong isulti kanimo ang bahin sa usa ka utility sa pagpangita nga labi nga nagpasimple sa kinabuhi. Pag-abot nako sa server ug kinahanglan nako pangitaon ang usa ka butang, ang una nakong buhaton mao ang pagsusi kung na-install ang ack. Kini nga utility usa ka maayo kaayo nga kapuli sa grep, ingon man pagpangita ug wc sa pila ka sukod. Nganong dili grep? Ang Ack adunay mas nindot nga mga setting gikan sa kahon, mas daghang mga kapilian nga mabasa sa tawo, perl regex ug usa ka config system. Kung gusto nimo (kinahanglan) pangitaon pinaagi sa terminal, nan kinahanglan nimo nga sulayan kini.

Panguna nga mga Feature

Ang Ack recursive pinaagi sa default, ug ang pagsulat sa mas gamay nga mga kapilian kanunay usa ka maayong ideya.

Mahimo natong gamiton ang bandila -wsa pagsulti sa utility sa pagpangita alang sa usa ka pananglitan sa among sumbanan nga gilibutan sa mga utlanan sa pulong (whitespace, slashes, etc.).

ack -w mysql

Ang Ack mas maayo kay sa grep

Gisuportahan sa Ack ang pagpangita pinaagi sa tipo sa file. Pananglitan, atong pangitaon ang module nga bersyon sa json files.

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

Ang Ack mas maayo kay sa grep

Ang usa ka kompleto nga lista sa gisuportahan nga mga tipo sa file mahimong tan-awon gamit ang:

ack --help-types

Kasagaran kinahanglan nimo nga ihap kung pila ka beses ang usa ka hugpong sa mga pulong nga makita sa usa ka log file, pananglitan, aron masabtan kung pila ang datos nga giproseso sa script.

Ang Ack mas maayo kay sa grep
Giihap namo kung pila ka beses nga nahitabo ang proseso sa test.log file, nga wala gikonsiderar ang kaso (-i).

Mahimo natong ihap ang mga panghitabo dili lamang sa usa ka piho nga file, apan sa usa ka grupo. Atong tapuson ang miaging pagpangita sa pulong nga mysql: ihap ang gidaghanon sa mga pulong (-katag) sa *.js files(--js), walay labot sa mga file diin walay nakit-an (-h) ug pagsumaryo sa resulta.

# Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π½Π° экран всС вхоТдСния
ack --js -w mysql
# считаСм ΠΎΠ±Ρ‰ΡƒΡŽ сумму Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ
ack --js -wch mysql

Ang Ack mas maayo kay sa grep

Dugang pa, makakuha kami usa ka detalyado nga taho sa gidaghanon sa mga panghitabo sa matag file gamit ang (-l)

ack --js -w -cl mysql

Ang Ack mas maayo kay sa grep

Kung kinahanglan nimo ang dugang nga konteksto alang sa imong pagpangita, mahimo kang mangutana sa ack
ipakita ang mga linya hangtod sa (-B) ug pagkahuman (-A) sa nakaplagang ekspresyon. Aron mahimo kini, kinahanglan nimo nga itakda pagkahuman sa kapilian ang gidaghanon sa mga linya nga kinahanglan ipakita.

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

Ang Ack mas maayo kay sa grep

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

Ang Ack mas maayo kay sa grep

Ug kung kinahanglan nimo ang duha, gamita ang (-FROM)

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

Adunay usab usa ka kapilian (-v) aron balihon ang pagpangita, i.e. ipakita ang mga linya nga walay gihatag nga sumbanan.

Regular nga ekspresyon

Ang Ack, dili sama sa grep, naggamit sa Perl compatible nga mga ekspresyon.
Alang kanako kini usa ka dako nga dugang; Dili ko kinahanglan nga mahinumdom sa usa ka bulag nga syntax alang sa regular nga mga ekspresyon.

ack 'vars+adds+'

Ang Ack mas maayo kay sa grep

Mas komplikado nga pananglitan

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

Ang Ack mas maayo kay sa grep

Kasagaran gusto nimong ibilin sa mga resulta kung unsa ang mohaum sa template. Ang --output nga opsyon makatabang dinhi (-o)

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

Ang Ack mas maayo kay sa grep

Dugang pa, gamit ang parentesis mahimo natong pilion ang nakit-an nga bahin ug ma-access kini sa output pinaagi sa $[group number] variable. Pananglitan,

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

Ang Ack mas maayo kay sa grep

Ang Ack adunay mapuslanon nga mga kapilian --range-pagsugod ΠΈ --layo-katapusan. Nagtabang sila kung
Ang datos gitipigan dili sa usa ka linya, apan sa multi-line nga porma.

Pananglitan, adunay usa ka file nga adunay sql code

Ang Ack mas maayo kay sa grep

Atong kuhaon ang mga ngalan sa kolum. Ang sinugdanan sa block usa ka linya nga nagsugod sa SELECT, ug ang katapusan usa ka linya nga nagsugod sa FROM.

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

Ang Ack mas maayo kay sa grep

Kung ang ekspresyon sa pagpangita adunay mga espesyal nga karakter sama sa usa ka tuldok, usa ka parentesis, ug uban pa, nan aron dili makalikay kanila gamit ang , mahimo nimong gamiton ang kapilian -Q.

# Поиск с экранированиСм 
ack --json 'mysql.'    
# Поиск Π±Π΅Π· экранирования
ack --json -Q mysql.

Ang Ack mas maayo kay sa grep

Pagtrabaho uban sa mga file

Pagkuha usa ka lista sa mga file nga adunay usa ka piho nga extension

ack -f --js

Ang Ack mas maayo kay sa grep

Pangitaa ang tanang js file kansang ngalan nagsugod sa P* gamit ang opsyon (-g).

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

Ang Ack mas maayo kay sa grep

Pagsalig

Ang utility adunay kaugalingon nga config file. Mahimo nimong adunay usa ka global config alang sa user (~/.ackrc) ug usa ka lokal alang sa usa ka piho nga folder (kinahanglan nimo nga maghimo usa ka .ackrc file sa folder).

Kadaghanan sa mga kapilian nga gisulat sa mga config mahimong ipiho sa mano-mano kung tawagan. Atong tan-awon ang pipila niini.

Ibaliwala ang folder kung nangita

--ignore-dir=dist

Magdugang ta ug custom file type -vue.

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

Karon mahimo nimong gamiton ang --vue nga kapilian sa pagpangita sa mga file .vue. Pananglitan: ack --vue App.
Mahimo nimong itakda ang usa ka lista sa mga extension alang niini nga kapilian. Pananglitan, dinhi, kung gamiton ang -vue, ang mga musunud iproseso:
.js nga mga file.

Ibaliwala ang mga file, pananglitan giminusan *.min.js

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

Pag-instalar

CentOS

yum update -y && yum install ack -y

Ubuntu

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

Mac oS

brew update && brew install  ack

Pag-instalar gikan sa site

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

Mga plugin para sa mga editor:

konklusyon

Dili kini tanan nga mga posibilidad. Ang bug-os nga lista sa mga gimbuhaton mahimong makita pinaagi sa pagdagan:

ack –-help
# ΠΈΠ»ΠΈ
ack --man

Ang ack utility nagtugot kanimo sa paghimo sa pagpangita sa terminal nga mas sayon ​​ug flexible. Ug gamit ang pipeline (ack -C 10 kumusta | ack kalibutan) makahimo ka ug gamhanang kombinasyon alang sa pagpangita ug pagsala sa datos sa file system ug sa mga file mismo.

Source: www.habr.com

Idugang sa usa ka comment