Ack er betra en grep

Mig langar að segja þér frá einu leitarforriti sem einfaldar lífið til muna. Þegar ég kem á serverinn og þarf að leita að einhverju þá er það fyrsta sem ég geri að athuga hvort ack sé uppsett. Þetta tól er frábær staðgengill fyrir grep, sem og find og wc að einhverju leyti. Af hverju ekki grep? Ack er með flottari stillingar úr kassanum, læsilegri valkosti, perl regex og stillingarkerfi. Ef þér líkar (verður að) leita í gegnum flugstöðina, þá ættirðu örugglega að prófa það.

Grunneiginleikar

Ack er sjálfgefið endurkvæmt og það er alltaf góð hugmynd að skrifa færri valkosti.

Við getum notað fána -wað segja tólinu að leita að dæmi um mynstur okkar umkringt orðamörkum (hvítt bil, skástrik osfrv.).

ack -w mysql

Ack er betra en grep

Ack styður leit eftir skráargerð. Til dæmis, við skulum finna mát útgáfuna í json skrám.

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

Ack er betra en grep

Hægt er að skoða heildarlista yfir studdar skráargerðir með því að nota:

ack --help-types

Oft þarf að telja hversu oft setning birtist í log-skrá, til dæmis til að skilja hversu mikið af gögnum handritið vann.

Ack er betra en grep
Við teljum hversu oft ferlið á sér stað í test.log skránni, án tillits til tilvika (-i).

Við getum talið atvik ekki bara í einni ákveðinni skrá heldur í hóp. Ljúkum fyrri leitinni að orðinu mysql: teldu fjölda tilvika orða (-frá) í *.js skrám(--js), að undanskildum skrám þar sem ekkert fannst (-h) og draga saman niðurstöðuna.

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

Ack er betra en grep

Að auki getum við fengið ítarlega skýrslu um fjölda atvika í hverri skrá með því að nota (-l)

ack --js -w -cl mysql

Ack er betra en grep

Ef þú þarft frekari samhengi fyrir leitina þína geturðu spurt ack
sýna línur upp til (-B) og eftir (-A) hinnar fundnu tjáningar. Til að gera þetta þarftu að tilgreina á eftir valkostinum fjölda lína sem þarf að sýna.

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

Ack er betra en grep

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

Ack er betra en grep

Og ef þú þarft bæði, notaðu þá ()

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

Það er líka möguleiki (-v) til að snúa leitinni, þ.e.a.s. sýna línur sem innihalda ekki ákveðið mynstur.

Regluleg tjáning

Ack, ólíkt grep, notar Perl samhæfar tjáningar.
Fyrir mig er þetta stór plús; ég þarf ekki að muna sérstaka setningafræði fyrir reglulegar tjáningar.

ack 'vars+adds+'

Ack er betra en grep

Flóknara dæmi

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

Ack er betra en grep

Oft viltu skilja eftir í niðurstöðunum aðeins það sem passar við sniðmátið. --output valkosturinn mun hjálpa hér (-o)

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

Ack er betra en grep

Að auki, með því að nota sviga, getum við valið fundinn hluta og fengið aðgang að honum í úttakinu í gegnum $[hópnúmer] breytuna. Til dæmis,

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

Ack er betra en grep

Ack hefur gagnlega valkosti --svið-byrjun и --svið-endir. Þeir hjálpa þegar
Gögnin eru geymd ekki í einni línu, heldur í fjöllínuformi.

Til dæmis er skrá með sql kóða

Ack er betra en grep

Við skulum draga dálkanöfnin út. Upphaf reitsins verður lína sem byrjar á SELECT og endirinn verður lína sem byrjar á FROM.

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

Ack er betra en grep

Ef leitarorðið inniheldur sértákn eins og punkt, svig og fleira, til að komast ekki undan þeim með því að nota , geturðu notað valkostinn -Q.

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

Ack er betra en grep

Vinna með skrár

Fáðu lista yfir skrár með tiltekinni viðbót

ack -f --js

Ack er betra en grep

Finndu allar js skrár sem byrja á P* með því að nota valkostinn (-g).

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

Ack er betra en grep

Stillingar

Tækið hefur sína eigin stillingarskrá. Þú getur haft bæði alþjóðlega stillingu fyrir notandann (~/.ackrc) og staðbundna fyrir ákveðna möppu (þú þarft að búa til .ackrc skrá í möppunni).

Flesta valmöguleikana sem eru skrifaðir í stillingunum er hægt að tilgreina handvirkt þegar þeir eru kallaðir. Við skulum skoða nokkrar þeirra.

Hunsa möppu þegar leitað er

--ignore-dir=dist

Við skulum bæta við sérsniðinni skráargerð -vue.

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

Nú geturðu notað --vue valkostinn til að leita í skrám .vue. Til dæmis: ack --vue app.
Þú getur tilgreint lista yfir viðbætur fyrir þennan valkost. Til dæmis, hér, þegar þú notar -vue, verður eftirfarandi unnið:
.js skrár.

Hunsa skrár, til dæmis minified *.min.js

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

Uppsetning

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

Uppsetning frá síðunni

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

Viðbætur fyrir ritstjóra:

Ályktun

Þetta eru ekki allir möguleikarnir. Hægt er að skoða allan lista yfir aðgerðir með því að keyra:

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

ack tólið gerir þér kleift að gera leit í flugstöðinni þægilegri og sveigjanlegri. Og með því að nota leiðslu (ack -C 10 halló | ack heimur) þú getur búið til öfluga samsetningu til að leita og sía gögn í skráarkerfinu og í skránum sjálfum.

Heimild: www.habr.com

Bæta við athugasemd