Mo fẹ sọ fun ọ nipa ohun elo wiwa kan ti o jẹ ki igbesi aye rọrun pupọ. Nigbati mo ba de ọdọ olupin ati pe Mo nilo lati wa nkankan, ohun akọkọ ti Mo ṣe ni ṣayẹwo boya a ti fi sori ẹrọ ack. IwUlO yii jẹ rirọpo ti o dara julọ fun grep, bakannaa wa ati wc si iye kan. Kilode ti kii ṣe grep? Ack ni awọn eto to dara julọ lati inu apoti, awọn aṣayan kika eniyan diẹ sii, perl regex ati eto atunto kan. Ti o ba fẹran (ni lati) wa nipasẹ ebute, lẹhinna o yẹ ki o gbiyanju ni pato.
Ipilẹ Awọn ẹya ara ẹrọ
Ack jẹ atunṣe nipasẹ aiyipada, ati kikọ awọn aṣayan diẹ jẹ imọran ti o dara nigbagbogbo.
A le lo asia -wlati sọ fun IwUlO lati wa apẹẹrẹ ti apẹẹrẹ wa ti o yika nipasẹ awọn aala ọrọ (aaye funfun, awọn gige, ati bẹbẹ lọ).
ack -w mysql
Ack ṣe atilẹyin wiwa nipasẹ iru faili. Fun apẹẹrẹ, jẹ ki a wa ẹya module ni awọn faili json.
ack --json '"version":s+"d+.d+.d+"'
Atokọ pipe ti awọn oriṣi faili ti o ni atilẹyin ni a le wo ni lilo:
ack --help-typesNigbagbogbo o nilo lati ka iye igba ti gbolohun ọrọ yoo han ninu faili log, fun apẹẹrẹ, lati loye iye data ti a ṣe ilana iwe afọwọkọ naa.
![]()
A ka iye igba ilana ti o waye ninu faili test.log, kii ṣe akiyesi ọran (-i).
A le ka awọn iṣẹlẹ kii ṣe ni faili kan pato, ṣugbọn ni ẹgbẹ kan. Jẹ ki a pari wiwa iṣaaju fun ọrọ mysql: ka nọmba awọn iṣẹlẹ ti awọn ọrọ (-sninu * .js awọn faili (--js), laisi awọn faili ninu eyiti a ko rii ohunkohun (-h) ati akopọ abajade.
# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql
Ni afikun, a le gba ijabọ alaye lori nọmba awọn iṣẹlẹ ninu faili kọọkan nipa lilo (-l)
ack --js -w -cl mysql
Ti o ba nilo afikun ipo fun wiwa rẹ, o le beere ack
fihan awọn ila to (-B) ati lẹhin (-A) ti ikosile ri. Lati ṣe eyi, o nilo lati pato lẹhin aṣayan nọmba awọn ila ti o nilo lati han.
# 2 строки до
ack --js --column -B 2 "query.once('" ./lib/
# 2 строки после
ack --js --column -A 2 "query.once('" . /lib/
Ati pe ti o ba nilo mejeeji, lẹhinna lo (-PẸLU)
ack --js --column -C 2 "query.once('" ./lib/Aṣayan tun wa (-v) lati yi wiwa pada, ie ṣafihan awọn ila ti ko ni ilana ti a fun.
Ikosile deede
Ack, ko dabi grep, nlo awọn ikosile ibaramu Perl.
Fun mi eyi jẹ afikun nla;
ack 'vars+adds+'
Diẹ eka apẹẹrẹ
ack '*s+[vd+.d+.d+]'
Nigbagbogbo o fẹ lati lọ kuro ni awọn abajade nikan ohun ti o baamu awoṣe naa. Aṣayan --jade yoo ṣe iranlọwọ nibi (-o)
ack -o '*s+[vd+.d+.d+]'
Ni afikun, ni lilo awọn akọmọ a le yan apakan ti a rii ki o wọle si ni iṣelọpọ nipasẹ $[nọmba ẹgbẹ] oniyipada. Fun apere,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack ni awọn aṣayan to wulo --ibiti-ibẹrẹ и --ibiti-opin. Wọn ṣe iranlọwọ nigbati
Awọn data ti wa ni ipamọ kii ṣe ni laini kan, ṣugbọn ni fọọmu ila-pupọ.
Fun apẹẹrẹ, faili kan wa pẹlu koodu sql

Jẹ ki a jade awọn orukọ ọwọn. Ibẹrẹ bulọọki yoo jẹ laini ti o bẹrẹ pẹlu Yan, ati ipari yoo jẹ laini ti o bẹrẹ pẹlu FROM.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Ti ikosile wiwa ba ni awọn ohun kikọ pataki gẹgẹbi akoko kan, akọmọ, ati awọn miiran, lẹhinna ki o má ba sa fun wọn ni lilo , o le lo aṣayan -Q.
# Поиск с экранированием
ack --json 'mysql.'
# Поиск без экранирования
ack --json -Q mysql.
Ṣiṣẹ pẹlu awọn faili
Gba atokọ ti awọn faili pẹlu itẹsiwaju kan pato
ack -f --js
Wa gbogbo awọn faili js ti orukọ wọn bẹrẹ pẹlu P * ni lilo aṣayan (-g).
ack -g --js '/Pa.+.js$'
Iṣeto ni
Ohun elo naa ni faili atunto tirẹ. O le ni mejeeji atunto agbaye fun olumulo (~/.ackrc) ati agbegbe kan fun folda kan pato (o nilo lati ṣẹda faili .ackrc ninu folda).
Pupọ julọ awọn aṣayan ti a kọ sinu awọn atunto le jẹ pato pẹlu ọwọ nigbati a pe. Jẹ ki a wo diẹ ninu wọn.
Foju folda nigba wiwa
--ignore-dir=distJẹ ki a ṣafikun iru faili aṣa kan -vue.
--type-add=vue:ext:js,vueBayi o le lo aṣayan --vue lati wa awọn faili .vue. Fun apere: aki --vue App.
O le pato akojọ kan ti awọn amugbooro fun aṣayan yii. Fun apẹẹrẹ, nibi, nigba lilo -vue, atẹle naa yoo ṣe ilana: .js awọn faili.
Foju awọn faili, fun apẹẹrẹ miniified * .min.js
--ignore-file=match:/.min.js$/eto
CentOS
yum update -y && yum install ack -yUbuntu
apt-get update -y && apt-get install ack-grep -yMac OS
brew update && brew install ackFifi sori ẹrọ lati aaye naa
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ackAwọn afikun fun awọn olootu:
ipari
Awọn wọnyi ni o wa ko gbogbo awọn ti o ṣeeṣe. Akojọ kikun ti awọn iṣẹ le ṣee wo nipasẹ ṣiṣe:
ack –-help
# или
ack --manIwUlO ack gba ọ laaye lati ṣe wiwa ni ebute ni irọrun diẹ sii ati rọ. Ati lilo opo gigun ti epo (ack -C 10 hello | aki aye) o le ṣẹda akojọpọ agbara fun wiwa ati sisẹ data ninu eto faili ati ninu awọn faili funrararẹ.
orisun: www.habr.com
