Ac yn well na grep

Rwyf am ddweud wrthych am un cyfleustodau chwilio sy'n symleiddio bywyd yn fawr. Pan fyddaf yn cyrraedd y gweinydd ac mae angen i mi chwilio am rywbeth, y peth cyntaf i'w wneud yw gwirio a yw ack wedi'i osod. Mae'r cyfleustodau hwn yn lle ardderchog ar gyfer grep, yn ogystal Γ’ find a wc i ryw raddau. Beth am grep? Mae gan Ack osodiadau brafiach allan o'r bocs, opsiynau mwy darllenadwy gan bobl, perl regex a system ffurfweddu. Os ydych chi'n hoffi (rhaid) chwilio trwy'r derfynell, yna dylech chi roi cynnig arni yn bendant.

Nodweddion Sylfaenol

Mae Ack yn ailadroddus yn ddiofyn, ac mae ysgrifennu llai o opsiynau bob amser yn syniad da.

Gallwn ddefnyddio baner -wi ddweud wrth y cyfleustodau i chwilio am enghraifft o'n patrwm wedi'i amgylchynu gan ffiniau geiriau (whitespace, slaes, etc.).

ack -w mysql

Ac yn well na grep

Mae Ack yn cefnogi chwilio yn Γ΄l math o ffeil. Er enghraifft, gadewch i ni ddod o hyd i fersiwn y modiwl mewn ffeiliau json.

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

Ac yn well na grep

Gellir gweld rhestr gyflawn o fathau o ffeiliau a gefnogir gan ddefnyddio:

ack --help-types

Yn aml mae angen i chi gyfrif sawl gwaith mae ymadrodd yn ymddangos mewn ffeil log, er enghraifft, i ddeall faint o ddata a brosesodd y sgript.

Ac yn well na grep
Rydyn ni'n cyfrif sawl gwaith mae'r broses yn digwydd yn y ffeil test.log, heb gymryd i ystyriaeth achos (-i).

Gallwn gyfrif digwyddiadau nid yn unig mewn un ffeil benodol, ond mewn grΕ΅p. Gadewch i ni gwblhau'r chwiliad blaenorol am y gair mysql: cyfrif nifer y digwyddiadau o eiriau (-from) mewn ffeiliau *.js(--js), heb gynnwys ffeiliau na chanfuwyd dim ynddynt (-h) a chrynhoi y canlyniad.

# Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π½Π° экран всС вхоТдСния
ack --js -w mysql
# считаСм ΠΎΠ±Ρ‰ΡƒΡŽ сумму Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ
ack --js -wch mysql

Ac yn well na grep

Yn ogystal, gallwn gael adroddiad manwl ar nifer y digwyddiadau ym mhob ffeil gan ddefnyddio (-l)

ack --js -w -cl mysql

Ac yn well na grep

Os oes angen cyd-destun ychwanegol arnoch ar gyfer eich chwiliad, gallwch ofyn ack
dangos llinellau hyd at (-B) ac ar Γ΄l (-A) o'r mynegiad canfyddedig. I wneud hyn, mae angen i chi nodi ar Γ΄l yr opsiwn nifer y llinellau y mae angen eu dangos.

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

Ac yn well na grep

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

Ac yn well na grep

Ac os oes angen y ddau arnoch chi, yna defnyddiwch (-GYDA)

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

Mae yna hefyd opsiwn (-v) i wrthdroi’r chwiliad, h.y. dangos llinellau nad ydynt yn cynnwys patrwm penodol.

Mynegiant rheolaidd

Mae Ac, yn wahanol i grep, yn defnyddio ymadroddion cydnaws Perl.
I mi mae hyn yn fantais fawr; does dim rhaid i mi gofio cystrawen ar wahΓ’n ar gyfer ymadroddion rheolaidd.

ack 'vars+adds+'

Ac yn well na grep

Enghraifft fwy cymhleth

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

Ac yn well na grep

Yn aml, rydych chi eisiau gadael dim ond yr hyn sy'n cyfateb i'r templed yn y canlyniadau. Bydd yr opsiwn -- allbwn yn helpu yma (-o)

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

Ac yn well na grep

Yn ogystal, gan ddefnyddio cromfachau gallwn ddewis y rhan a ddarganfuwyd a'i chyrchu mewn allbwn trwy'r newidyn $[rhif grΕ΅p]. Er enghraifft,

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

Ac yn well na grep

Mae gan Ack opsiynau defnyddiol --ystod-dechrau ΠΈ --ystod-diwedd. Maen nhw'n helpu pan
Mae'r data'n cael ei storio nid mewn un llinell, ond ar ffurf aml-linell.

Er enghraifft, mae ffeil gyda chod sql

Ac yn well na grep

Gadewch i ni dynnu enwau'r colofnau. Bydd dechrau'r bloc yn llinell sy'n dechrau gyda SELECT, a'r diwedd fydd llinell sy'n dechrau gyda FROM.

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

Ac yn well na grep

Os yw'r ymadrodd chwilio yn cynnwys nodau arbennig megis cyfnod, cromfachau, ac eraill, yna er mwyn peidio Γ’ dianc rhag defnyddio , gallwch ddefnyddio'r opsiwn -Q.

# Поиск с экранированиСм 
ack --json 'mysql.'    
# Поиск Π±Π΅Π· экранирования
ack --json -Q mysql.

Ac yn well na grep

Gweithio gyda ffeiliau

Cael rhestr o ffeiliau gydag estyniad penodol

ack -f --js

Ac yn well na grep

Dewch o hyd i bob ffeil js y mae ei henw yn dechrau gyda P* gan ddefnyddio'r opsiwn (-g).

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

Ac yn well na grep

Ffurfweddiad

Mae gan y cyfleustodau ei ffeil ffurfweddu ei hun. Gallwch gael cyfluniad byd-eang ar gyfer y defnyddiwr (~/.ackrc) ac un lleol ar gyfer ffolder benodol (mae angen i chi greu ffeil .ackrc yn y ffolder).

Gellir nodi'r rhan fwyaf o'r opsiynau sydd wedi'u hysgrifennu yn y ffurfweddau Γ’ llaw pan gΓ’nt eu galw. Gadewch i ni edrych ar rai ohonynt.

Anwybyddu ffolder wrth chwilio

--ignore-dir=dist

Gadewch i ni ychwanegu math ffeil arferol -vue.

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

Nawr gallwch chi ddefnyddio'r opsiwn --vue i chwilio ffeiliau .vue. Er enghraifft: ack --vue App.
Gallwch chi nodi rhestr o estyniadau ar gyfer yr opsiwn hwn. Er enghraifft, yma, wrth ddefnyddio -vue, bydd y canlynol yn cael eu prosesu:
ffeiliau .js.

Anwybyddu ffeiliau, er enghraifft wedi'u miniogi *.min.js

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

Gosod

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

Gosodiad o'r safle

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

Ategion ar gyfer golygyddion:

Casgliad

Nid yw'r rhain i gyd yn bosibiliadau. Gellir gweld y rhestr lawn o swyddogaethau trwy redeg:

ack –-help
# ΠΈΠ»ΠΈ
ack --man

Mae'r cyfleustodau ack yn eich galluogi i wneud chwilio yn y derfynell yn fwy cyfleus a hyblyg. A defnyddio piblinell (ack -C 10 helo | ack byd) gallwch greu cyfuniad pwerus ar gyfer chwilio a hidlo data yn y system ffeiliau ac yn y ffeiliau eu hunain.

Ffynhonnell: hab.com

Ychwanegu sylw