Ack ni bora kuliko grep

Ninataka kukuambia juu ya matumizi moja ya utaftaji ambayo hurahisisha maisha. Ninapofika kwenye seva na ninahitaji kutafuta kitu, jambo la kwanza ninalofanya ni kuangalia ikiwa ack imewekwa. Huduma hii ni mbadala bora ya grep, na vile vile find na wc kwa kiwango fulani. Kwa nini sio grep? Ack ana mipangilio mizuri zaidi nje ya kisanduku, chaguo zaidi zinazoweza kusomeka na binadamu, perl regex na mfumo wa usanidi. Ikiwa ungependa (lazima) utafute kupitia terminal, basi hakika unapaswa kujaribu.

Vipengele vya Msingi

Ack inajirudia kwa chaguo-msingi, na kuandika chaguo chache daima ni wazo zuri.

Tunaweza kutumia bendera -wkuambia shirika litafute mfano wa muundo wetu uliozungukwa na mipaka ya maneno (nafasi nyeupe, mikwaju, n.k.).

ack -w mysql

Ack ni bora kuliko grep

Ack inasaidia kutafuta kwa aina ya faili. Kwa mfano, hebu tupate toleo la moduli katika faili za json.

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

Ack ni bora kuliko grep

Orodha kamili ya aina za faili zinazotumika zinaweza kutazamwa kwa kutumia:

ack --help-types

Mara nyingi unahitaji kuhesabu ni mara ngapi kifungu kinaonekana kwenye faili ya kumbukumbu, kwa mfano, kuelewa ni data ngapi ambayo hati ilichakatwa.

Ack ni bora kuliko grep
Tunahesabu ni mara ngapi mchakato unatokea kwenye faili ya test.log, bila kuzingatia kesi (-i).

Tunaweza kuhesabu matukio sio tu katika faili moja maalum, lakini katika kikundi. Wacha tukamilishe utaftaji uliopita wa neno mysql: hesabu idadi ya kutokea kwa maneno (-toka) katika *.js faili (--js), ukiondoa faili ambazo hazikupatikana (-h) na muhtasari wa matokeo.

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

Ack ni bora kuliko grep

Kwa kuongezea, tunaweza kupata ripoti ya kina juu ya idadi ya matukio katika kila faili kwa kutumia (-l)

ack --js -w -cl mysql

Ack ni bora kuliko grep

Ikiwa unahitaji muktadha wa ziada kwa utafutaji wako, unaweza kuuliza ack
onyesha mistari hadi (-B) na baada (-A) ya usemi uliopatikana. Ili kufanya hivyo, unahitaji kutaja baada ya chaguo idadi ya mistari ambayo inahitaji kuonyeshwa.

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

Ack ni bora kuliko grep

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

Ack ni bora kuliko grep

Na ikiwa unahitaji zote mbili, basi tumia (-NA)

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

Pia kuna chaguo (-v) ili kugeuza utafutaji, yaani, onyesha mistari ambayo haina muundo fulani.

Kujieleza mara kwa mara

Ack, tofauti na grep, hutumia misemo inayolingana na Perl.
Kwangu mimi hii ni nyongeza kubwa; sio lazima nikumbuke syntax tofauti ya misemo ya kawaida.

ack 'vars+adds+'

Ack ni bora kuliko grep

Mfano ngumu zaidi

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

Ack ni bora kuliko grep

Mara nyingi unataka kuacha katika matokeo tu kile kinacholingana na kiolezo. Chaguo la --output litasaidia hapa (-o)

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

Ack ni bora kuliko grep

Kwa kuongeza, kwa kutumia mabano tunaweza kuchagua sehemu iliyopatikana na kuipata katika matokeo kupitia $[group number] variable. Kwa mfano,

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

Ack ni bora kuliko grep

Ack ina chaguzi muhimu --range-anza ΠΈ --range-mwisho. Wanasaidia wakati
Takwimu hazihifadhiwa kwa mstari mmoja, lakini kwa fomu ya safu nyingi.

Kwa mfano, kuna faili iliyo na msimbo wa sql

Ack ni bora kuliko grep

Hebu tutoe majina ya safu. Mwanzo wa kizuizi utakuwa mstari unaoanza na SELECT, na mwisho utakuwa mstari unaoanza na FROM.

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

Ack ni bora kuliko grep

Ikiwa usemi wa utaftaji una herufi maalum kama vile kipindi, mabano na zingine, basi ili usiziepuke kwa kutumia , unaweza kutumia chaguo. -Q.

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

Ack ni bora kuliko grep

Kufanya kazi na faili

Pata orodha ya faili zilizo na kiendelezi maalum

ack -f --js

Ack ni bora kuliko grep

Pata faili zote za js ambazo jina lake linaanza na P* kwa kutumia chaguo (-g).

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

Ack ni bora kuliko grep

Usanidi

Huduma ina faili yake ya usanidi. Unaweza kuwa na usanidi wa kimataifa kwa mtumiaji (~/.ackrc) na wa ndani kwa folda maalum (unahitaji kuunda faili ya .ackrc kwenye folda).

Chaguzi nyingi ambazo zimeandikwa kwenye usanidi zinaweza kubainishwa kwa mikono zinapoitwa. Hebu tuangalie baadhi yao.

Puuza folda unapotafuta

--ignore-dir=dist

Wacha tuongeze aina ya faili maalum -vue.

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

Sasa unaweza kutumia --vue chaguo kutafuta faili .vue. Kwa mfano: ack --vue App.
Unaweza kubainisha orodha ya viendelezi vya chaguo hili. Kwa mfano, hapa, unapotumia -vue, yafuatayo yatashughulikiwa:
.js faili.

Puuza faili, kwa mfano minified *.min.js

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

Ufungaji

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

Ufungaji kutoka kwa tovuti

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

Programu-jalizi za wahariri:

Hitimisho

Haya sio yote yanayowezekana. Orodha kamili ya vitendaji inaweza kutazamwa kwa kuendesha:

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

Huduma ya ack hukuruhusu kufanya utaftaji kwenye terminal iwe rahisi zaidi na rahisi. Na kutumia bomba (ack -C 10 hujambo | ack dunia) unaweza kuunda mchanganyiko wenye nguvu wa kutafuta na kuchuja data katika mfumo wa faili na faili zenyewe.

Chanzo: mapenzi.com

Kuongeza maoni