Ack pi bon pase grep

Mwen vle di ou sou yon sèl sèvis piblik rechèch ki senplifye lavi anpil. Lè mwen rive nan sèvè a epi mwen bezwen chèche yon bagay, premye bagay mwen fè se tcheke si ack enstale. Sèvis piblik sa a se yon ranplasman ekselan pou grep, osi byen ke jwenn ak wc nan yon sèten mezi. Poukisa pas grep? Ack gen pi bèl anviwònman soti nan bwat la, plis opsyon lizib pou moun, perl regex ak yon sistèm konfigirasyon. Si ou renmen (gen pou) rechèch nan tèminal la, Lè sa a, ou ta dwe definitivman eseye li.

Karakteristik debaz yo

Ack se recursive pa default, epi ekri mwens opsyon se toujou yon bon lide.

Nou ka sèvi ak yon drapo -wpou di sèvis piblik la chèche yon egzanp modèl nou an ki antoure pa limit mo (espas blan, koupe, elatriye).

ack -w mysql

Ack pi bon pase grep

Ack sipòte rechèch pa kalite dosye. Pou egzanp, ann jwenn vèsyon modil la nan dosye json.

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

Ack pi bon pase grep

Ou ka wè yon lis konplè kalite dosye sipòte lè l sèvi avèk:

ack --help-types

Souvan ou bezwen konte konbyen fwa yon fraz parèt nan yon dosye log, pou egzanp, konprann konbyen done script la trete.

Ack pi bon pase grep
Nou konte konbyen fwa pwosesis ki fèt nan dosye test.log la, pa pran an kont ka (-i).

Nou ka konte ensidan yo pa sèlman nan yon dosye espesifik, men nan yon gwoup. Ann finalize rechèch anvan an pou mo mysql la: konte kantite aparisyon mo yo (-soti) nan *.js fichye (--js), eksepte dosye kote yo pa jwenn anyen (-h) ak rezime rezilta a.

# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql

Ack pi bon pase grep

Anplis de sa, nou ka jwenn yon rapò detaye sou kantite ensidans nan chak dosye lè l sèvi avèk (-l)

ack --js -w -cl mysql

Ack pi bon pase grep

Si ou bezwen plis kontèks pou rechèch ou a, ou ka mande ack
montre liy jiska (-B) ak apre (-A) nan ekspresyon yo jwenn. Pou fè sa, ou bezwen presize apre opsyon ki kantite liy ki bezwen montre.

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

Ack pi bon pase grep

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

Ack pi bon pase grep

Men, si ou bezwen tou de, Lè sa a, sèvi ak (-AK)

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

Genyen tou yon opsyon (-v) pou envèse rechèch la, sa vle di montre liy ki pa genyen yon modèl bay yo.

Ekspresyon regilye

Ack, kontrèman ak grep, sèvi ak ekspresyon konpatib Perl.
Pou mwen sa a se yon gwo avantaj; mwen pa bezwen sonje yon sentaks separe pou ekspresyon regilye.

ack 'vars+adds+'

Ack pi bon pase grep

Egzanp pi konplèks

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

Ack pi bon pase grep

Souvan ou vle kite nan rezilta yo sèlman sa ki matche ak modèl la. Opsyon --output la pral ede isit la (-o)

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

Ack pi bon pase grep

Anplis de sa, lè l sèvi avèk parantèz nou ka chwazi pati yo jwenn ak jwenn aksè nan li nan pwodiksyon atravè $ [nimewo gwoup la] varyab. Pa egzanp,

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

Ack pi bon pase grep

Ack gen opsyon itil --ranje-kòmanse и --ranje-fen. Yo ede lè
Done yo estoke pa nan yon sèl liy, men nan fòm milti-liy.

Pou egzanp, gen yon dosye ki gen kòd sql

Ack pi bon pase grep

Ann ekstrè non kolòn yo. Kòmansman an nan blòk la pral yon liy ki kòmanse ak SELECT, epi nan fen a pral yon liy ki kòmanse ak FROM.

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

Ack pi bon pase grep

Si ekspresyon rechèch la gen karaktè espesyal tankou yon peryòd, yon parantèz, ak lòt moun, Lè sa a, nan lòd pa chape yo lè l sèvi avèk , ou ka itilize opsyon an. -Q.

# Поиск с экранированием 
ack --json 'mysql.'    
# Поиск без экранирования
ack --json -Q mysql.

Ack pi bon pase grep

Travay ak dosye

Jwenn yon lis dosye ki gen yon ekstansyon espesifik

ack -f --js

Ack pi bon pase grep

Jwenn tout fichye js ki gen non kòmanse ak P* lè l sèvi avèk opsyon (-g).

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

Ack pi bon pase grep

Konfigirasyon

Sèvis piblik la gen pwòp dosye konfigirasyon li yo. Ou ka gen tou de yon konfigirasyon mondyal pou itilizatè a (~/.ackrc) ak yon sèl lokal pou yon katab espesifik (ou bezwen kreye yon fichye .ackrc nan katab la).

Pifò nan opsyon ki ekri nan konfigirasyon yo ka manyèlman espesifye lè yo rele. Ann gade kèk nan yo.

Inyore katab lè w ap chèche

--ignore-dir=dist

Ann ajoute yon kalite dosye koutim -vue.

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

Koulye a, ou ka itilize opsyon --vue pou fè rechèch nan dosye yo .vue. Pa egzanp: ack --vue App.
Ou ka presize yon lis ekstansyon pou opsyon sa a. Pou egzanp, isit la, lè w ap itilize -vue, sa ki annapre yo pral trete:
.js dosye.

Inyore fichye yo, pou egzanp minified *.min.js

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

Enstalasyon

CentOS

yum update -y && yum install ack -y

Ubentu

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

Mac OS

brew update && brew install  ack

Enstalasyon soti nan sit la

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

Plugins pou editè:

Konklizyon

Sa yo se pa tout posiblite yo. Ou ka wè lis konplè fonksyon yo lè w ap kouri:

ack –-help
# или
ack --man

Ack sèvis piblik la pèmèt ou fè rechèch nan tèminal la pi pratik ak fleksib. Ak lè l sèvi avèk tiyo (ack -C 10 bonjou | ack mond lan) ou ka kreye yon konbine pwisan pou rechèch ak filtraj done nan sistèm dosye a ak nan dosye yo tèt yo.

Sous: www.habr.com

Add nouvo kòmantè