Ack grep baino hobea da

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 grep baino hobea da

Ack-k fitxategi motaren arabera bilatzea onartzen du. Adibidez, aurki dezagun moduluaren bertsioa json fitxategietan.

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

Ack grep baino hobea da

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.

Ack grep baino hobea da
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

Ack grep baino hobea da

Horrez gain, fitxategi bakoitzeko agerraldi kopuruari buruzko txosten zehatza lor dezakegu ((-l)

ack --js -w -cl mysql

Ack grep baino hobea da

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/

Ack grep baino hobea da

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

Ack grep baino hobea da

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+'

Ack grep baino hobea da

Adibide konplexuagoa

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

Ack grep baino hobea da

Askotan emaitzetan txantiloiarekin bat datorrena bakarrik utzi nahi duzu. --output aukerak lagunduko du hemen (-o)

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

Ack grep baino hobea da

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 grep baino hobea da

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

Ack grep baino hobea da

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

Ack grep baino hobea da

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.

Ack grep baino hobea da

Fitxategiekin lan egitea

Lortu luzapen zehatz bat duten fitxategien zerrenda

ack -f --js

Ack grep baino hobea da

Bilatu izena P*z hasten den js fitxategi guztiak aukera erabiliz (-g).

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

Ack grep baino hobea da

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

Gehitu iruzkin berria