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
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 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.
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
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
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/
# 2 ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΡΠ»Π΅
ack --js --column -A 2 "query.once('" . /lib/
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+'
Mas komplikado nga pananglitan
ack '*s+[vd+.d+.d+]'
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+]'
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 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
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
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.
Pagtrabaho uban sa mga file
Pagkuha usa ka lista sa mga file nga adunay usa ka piho nga extension
ack -f --js
Pangitaa ang tanang js file kansang ngalan nagsugod sa P* gamit ang opsyon (-g).
ack -g --js '/Pa.+.js$'
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