Ack huwa aħjar minn grep

Irrid ngħidlek dwar utilità waħda ta 'tfittxija li tissimplifika bil-kbir il-ħajja. Meta nasal fis-server u jkolli bżonn infittex xi ħaġa, l-ewwel ħaġa li nagħmel hija niċċekkja jekk ack huwiex installat. Din l-utilità hija sostitut eċċellenti għall-grep, kif ukoll issib u wc sa ċertu punt. Għaliex ma grep? Ack għandu settings isbaħ barra mill-kaxxa, għażliet aktar li jinqraw mill-bniedem, perl regex u sistema ta 'konfigurazzjoni. Jekk tixtieq (jkollok) tfittex permezz tat-terminal, allura definittivament għandek tipprovaha.

Karatteristiċi Bażiċi

Ack huwa rikorsiv awtomatikament, u l-kitba ta 'inqas għażliet hija dejjem idea tajba.

Nistgħu nużaw bandiera -wbiex tgħid lill-utilità biex tfittex eżempju tal-mudell tagħna mdawra bil-konfini tal-kliem (spazju abjad, slashes, eċċ.).

ack -w mysql

Ack huwa aħjar minn grep

Ack jappoġġja t-tiftix skont it-tip ta' fajl. Pereżempju, ejja nsibu l-verżjoni tal-modulu fil-fajls json.

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

Ack huwa aħjar minn grep

Lista kompluta ta' tipi ta' fajls appoġġjati tista' tara billi tuża:

ack --help-types

Ħafna drabi għandek bżonn tgħodd kemm-il darba frażi tidher f'fajl ta 'ġurnal, pereżempju, biex tifhem kemm dejta pproċessa l-iskrittura.

Ack huwa aħjar minn grep
Aħna ngħoddu kemm-il darba l-proċess iseħħ fil-fajl test.log, mingħajr ma nqisu l-każ (-i).

Nistgħu ngħoddu okkorrenzi mhux biss f'fajl wieħed speċifiku, iżda fi grupp. Ejja nifinalizzaw it-tfittxija preċedenti għall-kelma mysql: għadd in-numru ta 'okkorrenzi ta' kliem () f'fajls *.js(--js), esklużi fajls li fihom ma nstab xejn (-h) u jiġbor ir-riżultat.

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

Ack huwa aħjar minn grep

Barra minn hekk, nistgħu niksbu rapport dettaljat dwar in-numru ta' okkorrenzi f'kull fajl billi tuża (-l)

ack --js -w -cl mysql

Ack huwa aħjar minn grep

Jekk għandek bżonn kuntest addizzjonali għat-tfittxija tiegħek, tista' titlob ack
uri linji sa (-B) u wara (-A) tal-espressjoni misjuba. Biex tagħmel dan, għandek bżonn tispeċifika wara l-għażla n-numru ta 'linji li jeħtieġ li jintwerew.

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

Ack huwa aħjar minn grep

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

Ack huwa aħjar minn grep

U jekk għandek bżonn it-tnejn, imbagħad uża (-MILL)

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

Hemm ukoll għażla (-v) biex taqleb it-tfittxija, jiġifieri turi linji li ma fihomx mudell partikolari.

Espressjoni regolari

Ack, b'differenza grep, juża espressjonijiet kompatibbli Perl.
Għalija dan huwa vantaġġ kbir; m'għandix għalfejn niftakar sintassi separata għal espressjonijiet regolari.

ack 'vars+adds+'

Ack huwa aħjar minn grep

Eżempju aktar kumpless

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

Ack huwa aħjar minn grep

Ħafna drabi trid tħalli fir-riżultati biss dak li jaqbel mal-mudell. L-għażla --output tgħin hawn (-o)

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

Ack huwa aħjar minn grep

Barra minn hekk, bl-użu tal-parentesi nistgħu nagħżlu l-parti misjuba u naċċessawha fl-output permezz tal-varjabbli $[numru tal-grupp]. Pereżempju,

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

Ack huwa aħjar minn grep

Ack għandu għażliet utli --range-start и --range-end. Huma jgħinu meta
Id-dejta hija maħżuna mhux f'linja waħda, iżda f'forma ta 'ħafna linji.

Per eżempju, hemm fajl b'kodiċi sql

Ack huwa aħjar minn grep

Ejja estratt l-ismijiet tal-kolonni. Il-bidu tal-blokk se jkun linja li tibda b'SELECT, u t-tmiem ikun linja li tibda b'FROM.

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

Ack huwa aħjar minn grep

Jekk l-espressjoni tat-tfittxija fiha karattri speċjali bħal punt, parentesi, u oħrajn, allura biex ma taħrabhomx billi tuża , tista’ tuża l-għażla -Q.

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

Ack huwa aħjar minn grep

Ħidma ma 'fajls

Ikseb lista ta 'fajls b'estensjoni speċifika

ack -f --js

Ack huwa aħjar minn grep

Sib il-fajls js kollha li isimhom jibda b'P* billi tuża l-għażla (-g).

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

Ack huwa aħjar minn grep

Konfigurazzjoni

L-utilità għandha l-fajl tal-konfigurazzjoni tagħha stess. Jista' jkollok kemm konfigurazzjoni globali għall-utent (~/.ackrc) kif ukoll waħda lokali għal folder speċifiku (jeħtieġlek toħloq fajl .ackrc fil-folder).

Ħafna mill-għażliet li huma miktuba fil-konfigurazzjonijiet jistgħu jiġu speċifikati manwalment meta msejħa. Ejja nħarsu lejn ftit minnhom.

Injora folder meta tfittex

--ignore-dir=dist

Ejja nżidu tip ta' fajl personalizzat -vue.

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

Issa tista' tuża l-għażla --vue biex tfittex fajls .vue. Pereżempju: ack --vue App.
Tista' tispeċifika lista ta' estensjonijiet għal din l-għażla. Pereżempju, hawnhekk, meta tuża -vue, dan li ġej se jiġi pproċessat:
.js fajls.

Injora l-fajls, per eżempju minifikat *.min.js

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

Installazzjoni

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

Installazzjoni mis-sit

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

Plugins għall-edituri:

Konklużjoni

Dawn mhumiex il-possibbiltajiet kollha. Il-lista sħiħa ta' funzjonijiet tista' tara billi taħdem:

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

L-utilità ack tippermettilek tagħmel it-tiftix fit-terminal aktar konvenjenti u flessibbli. U tuża pipeline (ack -C 10 hello | ack dinja) tista 'toħloq taħlita qawwija għat-tiftix u l-iffiltrar tad-dejta fis-sistema tal-fajls u fil-fajls infushom.

Sors: www.habr.com

Żid kumment