Tha Ack nas fheàrr na grep

Tha mi airson innse dhut mu aon ghoireas sgrùdaidh a bhios gu mòr a’ sìmpleachadh beatha. Nuair a ruigeas mi an fhrithealaiche agus feumaidh mi rudeigin a lorg, is e a’ chiad rud a nì mi dèanamh cinnteach a bheil ack air a chuir a-steach. Tha an goireas seo na dheagh àite airson grep, a bharrachd air lorg agus wc gu ìre. Carson nach grep? Tha roghainnean nas fheàrr aig Ack a-mach às a’ bhogsa, roghainnean a ghabhas leughadh le daoine, perl regex agus siostam config. Ma tha thu ag iarraidh (feumaidh) sgrùdadh a dhèanamh tron ​​​​phort-adhair, bu chòir dhut feuchainn air gu cinnteach.

Feartan bunaiteach

Tha Ack ath-chuairteachail gu bunaiteach, agus tha sgrìobhadh nas lugha de roghainnean an-còmhnaidh na dheagh bheachd.

Faodaidh sinn bratach a chleachdadh -wgus innse don ghoireas coimhead airson eisimpleir den phàtran againn air a chuairteachadh le crìochan fhaclan (àite geal, slashes, msaa).

ack -w mysql

Tha Ack nas fheàrr na grep

Tha Ack a’ toirt taic do rannsachadh a rèir seòrsa faidhle. Mar eisimpleir, lorg sinn dreach a’ mhodal ann am faidhlichean json.

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

Tha Ack nas fheàrr na grep

Faodar liosta iomlan de na seòrsaichean faidhle le taic fhaicinn le bhith a’ cleachdadh:

ack --help-types

Gu math tric feumaidh tu cunntadh cia mheud uair a nochdas abairt ann am faidhle log, mar eisimpleir, gus tuigse fhaighinn air an ìre de dhàta a chaidh an sgriobt a phròiseasadh.

Tha Ack nas fheàrr na grep
Bidh sinn a’ cunntadh cia mheud uair a bhios pròiseas a’ tachairt anns an fhaidhle test.log, gun a bhith a’ toirt aire do chùis (-i).

Faodaidh sinn tachartasan a chunntadh chan ann a-mhàin ann an aon fhaidhle sònraichte, ach ann am buidheann. Nach cuir sinn crìoch air an rannsachadh roimhe airson an fhacail mysql: cunnt an àireamh de dh’ fhaclan a thachair (- tha) ann am faidhlichean *.js(--js), às aonais faidhlichean anns nach deach dad a lorg (-h) agus geàrr-chunntas air an toradh.

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

Tha Ack nas fheàrr na grep

A bharrachd air an sin, gheibh sinn aithisg mhionaideach air an àireamh de thachartasan anns gach faidhle a’ cleachdadh (-l)

ack --js -w -cl mysql

Tha Ack nas fheàrr na grep

Ma tha feum agad air co-theacs a bharrachd airson do rannsachadh, faodaidh tu faighneachd dha
seall loidhnichean suas gu (-B) agus an dèidh (-A) den abairt a chaidh a lorg. Gus seo a dhèanamh, feumaidh tu an àireamh de loidhnichean a dh'fheumar a shealltainn às deidh an roghainn.

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

Tha Ack nas fheàrr na grep

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

Tha Ack nas fheàrr na grep

Agus ma tha feum agad air an dà chuid, cleachd (-WITH)

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

Tha roghainn ann cuideachd (-v) gus an rannsachadh a thionndadh, i.e. seall loidhnichean anns nach eil pàtran sònraichte.

Cur an cèill cunbhalach

Bidh Ack, eu-coltach ri grep, a’ cleachdadh abairtean co-chosmhail ri Perl.
Dhòmhsa is e buannachd mhòr a tha seo; chan fheum mi cuimhneachadh air co-chòrdadh air leth airson abairtean cunbhalach.

ack 'vars+adds+'

Tha Ack nas fheàrr na grep

Eisimpleir nas iom-fhillte

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

Tha Ack nas fheàrr na grep

Gu math tric bidh thu airson fàgail anns na toraidhean dìreach na tha a rèir an teamplaid. Cuidichidh an roghainn --output an seo (-o)

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

Tha Ack nas fheàrr na grep

A bharrachd air sin, le bhith a’ cleachdadh bragan, is urrainn dhuinn am pàirt a chaidh a lorg a thaghadh agus faighinn thuige ann an toradh tron ​​chaochladair $[buidhne]. Mar eisimpleir,

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

Tha Ack nas fheàrr na grep

Tha roghainnean feumail aig Ack --raon-tòiseachaidh и --raon-crìoch. Bidh iad a 'cuideachadh nuair a
Tha an dàta air a stòradh chan ann ann an aon loidhne, ach ann an cruth ioma-loidhne.

Mar eisimpleir, tha faidhle ann le còd sql

Tha Ack nas fheàrr na grep

Bheir sinn a-mach ainmean nan colbhan. Bidh toiseach a’ bhloca na loidhne a’ tòiseachadh le SELECT, agus bidh an deireadh na loidhne a’ tòiseachadh le FROM.

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

Tha Ack nas fheàrr na grep

Ma tha caractaran sònraichte anns an abairt sgrùdaidh leithid ùine, brannd, agus feadhainn eile, gus nach teicheadh ​​​​thu le bhith a’ cleachdadh , faodaidh tu an roghainn a chleachdadh -Q.

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

Tha Ack nas fheàrr na grep

Obraich le faidhlichean

Faigh liosta de fhaidhlichean le leudachadh sònraichte

ack -f --js

Tha Ack nas fheàrr na grep

Lorg a h-uile faidhle js aig a bheil ainm a’ tòiseachadh le P* a’ cleachdadh an roghainn (-g).

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

Tha Ack nas fheàrr na grep

Rèiteachadh

Tha am faidhle config aige fhèin aig a’ ghoireas. Faodaidh tu an dà chuid config cruinneil a bhith agad airson an neach-cleachdaidh (~/.ackrc) agus fear ionadail airson pasgan sònraichte (feumaidh tu faidhle .ackrc a chruthachadh sa phasgan).

Faodar a’ mhòr-chuid de na roghainnean a tha sgrìobhte anns na configs a shònrachadh le làimh nuair a thèid an gairm. Bheir sinn sùil air beagan dhiubh.

Mothaich am pasgan nuair a bhios tu a’ lorg

--ignore-dir=dist

Nach cuir sinn seòrsa faidhle àbhaisteach -vue.

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

A-nis faodaidh tu an roghainn --vue a chleachdadh gus faidhlichean a lorg .bhuain. Mar eisimpleir: ack --vue App.
Faodaidh tu liosta de leudachaidhean a shònrachadh airson an roghainn seo. Mar eisimpleir, an seo, nuair a bhios tu a’ cleachdadh -vue, thèid na leanas a phròiseasadh:
.js faidhlichean.

Leig seachad faidhlichean, mar eisimpleir mion-sgrùdadh *.min.js

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

suidheachadh

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

Stàladh bhon làraich

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

Plugins airson luchd-deasachaidh:

co-dhùnadh

Chan e seo na comasan uile. Faodar an liosta iomlan de ghnìomhan fhaicinn le bhith a’ ruith:

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

Leigidh an goireas ack leat sgrùdadh a dhèanamh anns an inneal-crìochnachaidh nas goireasaiche agus nas sùbailte. Agus a’ cleachdadh loidhne-phìoban (ack -C 10 hello | saoghal aic) faodaidh tu cothlamadh cumhachdach a chruthachadh airson dàta a lorg agus a shìoladh san t-siostam faidhle agus anns na faidhlichean fhèin.

Source: www.habr.com

Cuir beachd ann