Bizitza asko errazten duen bilaketa-utilitate bati buruz esan nahi dizut. Zerbitzarira iristen naizenean eta zerbait bilatu behar dudanean, egiten dudan lehenengo gauza ack instalatuta dagoen egiaztatzea da. Utilitate hau grep-en ordezko bikaina da, baita find eta wc-en neurri batean ere. Zergatik ez grep? Ack-ek ezarpen politagoak ditu, gizakiek irakurtzeko aukera gehiago, perl regex eta konfigurazio sistema bat. Terminalean bilatu nahi baduzu (behar) baduzu, behin betiko probatu beharko zenuke.
Oinarrizko Ezaugarriak
Ack errekurtsiboa da lehenespenez, eta aukera gutxiago idaztea ideia ona da beti.
Bandera bat erabil dezakegu -werabilgarritasunari esatea gure ereduaren instantzia bat bilatzeko hitzen mugez inguratuta (zuriak, barrak, etab.).
ack -w mysql
Ack-k fitxategi motaren arabera bilatzea onartzen du. Adibidez, aurki dezagun moduluaren bertsioa json fitxategietan.
ack --json '"version":s+"d+.d+.d+"'
Onartutako fitxategi-moten zerrenda osoa ikus daiteke:
ack --help-types
Askotan esaldi bat erregistro-fitxategi batean zenbat aldiz agertzen den zenbatu behar duzu, adibidez, scriptak zenbat datu prozesatu dituen ulertzeko.
Test.log fitxategian prozesua zenbat aldiz gertatzen den zenbatzen dugu, kasuak kontuan hartu gabe (-i).
Fitxategi zehatz batean ez ezik, talde batean agerraldiak zenbatu ditzakegu. Amai dezagun mysql hitzaren aurreko bilaketa: zenbatu hitzen agerraldi kopurua (-Ρ) *.js fitxategietan (--js), ezer aurkitu ez duten fitxategiak kenduta (-h) eta emaitza laburbilduz.
# Π²ΡΠ²Π΅Π΄Π΅ΠΌ Π½Π° ΡΠΊΡΠ°Π½ Π²ΡΠ΅ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ
ack --js -w mysql
# ΡΡΠΈΡΠ°Π΅ΠΌ ΠΎΠ±ΡΡΡ ΡΡΠΌΠΌΡ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ
ack --js -wch mysql
Horrez gain, fitxategi bakoitzeko agerraldi kopuruari buruzko txosten zehatza lor dezakegu ((-l)
ack --js -w -cl mysql
Zure bilaketarako testuinguru gehigarria behar baduzu, ack eska dezakezu
erakutsi lerroak (-B) eta ondoren (-A) aurkitutako adierazpenaren. Horretarako, aukeraren ostean zehaztu behar duzu zein den erakutsi beharreko lerro kopurua.
# 2 ΡΡΡΠΎΠΊΠΈ Π΄ΠΎ
ack --js --column -B 2 "query.once('" ./lib/
# 2 ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΡΠ»Π΅
ack --js --column -A 2 "query.once('" . /lib/
Eta biak behar badituzu, erabili (-GANDIK)
ack --js --column -C 2 "query.once('" ./lib/
Aukera bat ere badago(-v) bilaketa alderantzikatzeko, hau da, eredu jakinik ez duten lerroak erakusteko.
Adierazpen erregularra
Ack-ek, grep-ek ez bezala, Perl-eko adierazpen bateragarriak erabiltzen ditu.
Niretzat hau abantaila handia da; ez dut adierazpen erregularentzako sintaxi bereizirik gogoratu beharrik.
ack 'vars+adds+'
Adibide konplexuagoa
ack '*s+[vd+.d+.d+]'
Askotan emaitzetan txantiloiarekin bat datorrena bakarrik utzi nahi duzu. --output aukerak lagunduko du hemen (-o)
ack -o '*s+[vd+.d+.d+]'
Horrez gain, parentesiak erabiliz aurkitutako zatia hautatu eta irteeran sar dezakegu $[talde zenbakia] aldagaiaren bidez. Adibidez,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack-ek aukera erabilgarriak ditu --barrutia-hasiera ΠΈ --sorta-amaiera. Noiz laguntzen dute
Datuak ez dira lerro batean gordetzen, lerro anitzeko moduan baizik.
Adibidez, sql kodea duen fitxategi bat dago
Atera ditzagun zutabeen izenak. Blokearen hasiera SELECT-ekin hasten den lerroa izango da, eta amaiera FROM-rekin hasten den lerroa izango da.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Bilaketa-esamoldeak karaktere bereziak baditu, hala nola puntu bat, parentesi bat eta beste batzuk, orduan horietatik ihes egin ez dadin, aukera erabil dezakezu -Q.
# ΠΠΎΠΈΡΠΊ Ρ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
ack --json 'mysql.'
# ΠΠΎΠΈΡΠΊ Π±Π΅Π· ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ack --json -Q mysql.
Fitxategiekin lan egitea
Lortu luzapen zehatz bat duten fitxategien zerrenda
ack -f --js
Bilatu izena P*z hasten den js fitxategi guztiak aukera erabiliz (-g).
ack -g --js '/Pa.+.js$'
konfigurazioa
Utilitateak bere konfigurazio fitxategia du. Erabiltzailearentzat konfigurazio globala (~/.ackrc) eta karpeta jakin baterako lokala izan dezakezu (.ackrc fitxategi bat sortu behar duzu karpetan).
Deitzean eskuz zehaztu daitezke konfigurazioetan idazten diren aukera gehienak. Ikus ditzagun horietako batzuk.
Ez ikusi karpeta bilatzean
--ignore-dir=dist
Gehitu dezagun -vue fitxategi mota pertsonalizatua.
--type-add=vue:ext:js,vue
Orain --vue aukera erabil dezakezu fitxategiak bilatzeko .ikusi. Adibidez: ack --vue aplikazioa.
Aukera honetarako luzapenen zerrenda bat zehaztu dezakezu. Adibidez, hemen, -vue erabiltzean, honako hau prozesatuko da: .js fitxategiak.
Ez ikusi fitxategiak, adibidez, *.min.js txikitua
--ignore-file=match:/.min.js$/
Instalazio-
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
Instalazioa gunetik
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack
Editoreentzako pluginak:
Ondorioa
Hauek ez dira aukera guztiak. Funtzioen zerrenda osoa exekutatuta ikus daiteke:
ack β-help
# ΠΈΠ»ΠΈ
ack --man
Ack utilitateari esker, terminalean bilaketa erosoagoa eta malguagoa egin dezakezu. Eta kanalizazioa erabiliz (ack -C 10 kaixo | ack mundua) konbinazio indartsu bat sor dezakezu fitxategi-sisteman eta fitxategietan datuak bilatzeko eta iragazteko.
Iturria: www.habr.com