Ack e betere ho feta grep

Ke batla ho u joetsa ka sesebelisoa se le seng sa ho batla se nolofatsang bophelo haholo. Ha ke fihla ho seva mme ke hloka ho batla ho hong, ntho ea pele eo ke e etsang ke ho hlahloba hore na ack e kentsoe. Sesebelisoa sena ke sebaka se setle sa grep, hammoho le ho fumana le wc ho isa bohōleng bo itseng. Hobaneng u sa grep? Ack e na le litlhophiso tse ntle ka ntle ho lebokose, likhetho tse baloang ke batho, perl regex le sistimi ea config. Haeba u rata (o tlameha) ho batla ka har'a terminal, joale u tlameha ho e leka.

Lintlha tsa Motheo

Ack e ipheta ka mokhoa o ikhethileng, 'me ho ngola likhetho tse fokolang ke mohopolo o motle kamehla.

Re ka sebelisa folakha -who bolella thuso ho batla mohlala oa mohlala oa rona o pota-potiloeng ke meeli ea mantsoe (whitespace, slashes, joalo-joalo).

ack -w mysql

Ack e betere ho feta grep

Ack e tšehetsa ho batla ka mofuta oa faele. Mohlala, ha re fumane mofuta oa module lifaeleng tsa json.

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

Ack e betere ho feta grep

Lenane le felletseng la mefuta ea lifaele tse tšehetsoeng li ka bonoa ho sebelisoa:

ack --help-types

Hangata o hloka ho bala hore na poleloana e hlaha hangata hakae faeleng ea log, mohlala, ho utloisisa hore na script e sebelitse hakae.

Ack e betere ho feta grep
Re bala hore na ts'ebetso e etsahala ka makhetlo a makae faeleng ea test.log, re sa nahane ka nyeoe (-i).

Re ka bala liketsahalo eseng faeleng e le 'ngoe feela, empa le sehlopha. Ha re phethelle patlo e fetileng ea lentsoe mysql: bala palo ea mantsoe a hlahang (-s) ho *.js lifaele (--js), ntle le lifaele tseo ho seng letho le fumanoeng ho tsona (-h) le ho akaretsa sephetho.

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

Ack e betere ho feta grep

Ntle le moo, re ka fumana tlaleho e felletseng mabapi le palo ea liketsahalo tse hlahang faeleng ka 'ngoe re sebelisa (-l)

ack --js -w -cl mysql

Ack e betere ho feta grep

Haeba o hloka moelelo o eketsehileng oa patlo ea hau, o ka botsa ack
bonts'a mela ho fihlela (-B) le ka morao (-A) ea polelo e fumanoeng. Ho etsa sena, o hloka ho hlakisa ka mor'a khetho palo ea mela e lokelang ho bontšoa.

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

Ack e betere ho feta grep

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

Ack e betere ho feta grep

'Me haeba u li hloka ka bobeli, joale sebelisa (-HO TSOA)

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

Hape ho na le khetho (-v) ho khelosa patlo, ke ho re bontša mela e se nang mokhoa o fanoeng.

Mantsoe a tloaelehileng

Ack, ho fapana le grep, e sebelisa mantsoe a lumellanang le Perl.
Ho 'na sena ke motsoako o moholo; ha ho hlokahale hore ke hopole syntax e arohaneng bakeng sa lipolelo tse tloaelehileng.

ack 'vars+adds+'

Ack e betere ho feta grep

Mohlala o rarahaneng haholoanyane

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

Ack e betere ho feta grep

Hangata u batla ho siea liphetho feela se tšoanang le thempleite. Khetho ea --output e tla thusa mona (-o)

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

Ack e betere ho feta grep

Ho phaella moo, ka ho sebelisa masakaneng re ka khetha karolo e fumanoeng 'me ra e fumana ka tlhahiso ka $[nomoro ea sehlopha]. Ka mohlala,

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

Ack e betere ho feta grep

Ack e na le likhetho tse sebetsang --range-start и --range-qetellong. Ba thusa ha
Lintlha ha li bolokoe moleng o le mong, empa ka mokhoa oa mela e mengata.

Ka mohlala, ho na le faele e nang le sql code

Ack e betere ho feta grep

Ha re ntše mabitso a kholomo. Tšimoloho ea boloko e tla ba mola o qalang ka KHETHA, 'me qetello e tla ba mola o qalang ka FROM.

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

Ack e betere ho feta grep

Haeba polelo ea ho batla e na le litlhaku tse ikhethileng joalo ka nako, masaka, le tse ling, e le hore u se ke oa li baleha u sebelisa, u ka sebelisa khetho eo. -Q.

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

Ack e betere ho feta grep

Ho sebetsana le lifaele

Fumana lethathamo la lifaele tse nang le katoloso e itseng

ack -f --js

Ack e betere ho feta grep

Fumana lifaele tsohle tsa js tseo lebitso la tsona le qalang ka P* u sebelisa khetho (-g).

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

Ack e betere ho feta grep

Moralo

Sesebelisoa se na le faele ea sona ea config. U ka ba le litlhophiso tsa lefats'e ka bobeli bakeng sa mosebelisi (~/.ackrc) le ea lehae bakeng sa foldara e itseng (o hloka ho theha faele ea .ackrc foldareng).

Boholo ba likhetho tse ngotsoeng ho li-configs li ka hlalosoa ka letsoho ha li bitsoa. A re hlahlobeng tse seng kae tsa tsona.

Hlokomoloha sephutheli ha u se batla

--ignore-dir=dist

Ha re kenye mofuta oa faele oa tloaelo -vue.

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

Joale u ka sebelisa khetho ea --vue ho batla lifaele .vue. Ka mohlala: ack --vue App.
O ka hlakisa lethathamo la likeketso bakeng sa khetho ena. Ka mohlala, mona, ha u sebelisa -vue, tse latelang li tla sebetsoa:
.js lifaele.

Hlokomoloha lifaele, mohlala minified *.min.js

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

bophirima

CentOS

yum update -y && yum install ack -y

Botho

apt-get update -y && apt-get install ack-grep -y

mac OS

brew update && brew install  ack

Ho kenya ho tsoa setšeng

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

Li-plugins tsa bahlophisi:

fihlela qeto e

Tsena hase menyetla eohle. Lethathamo le felletseng la mesebetsi le ka bonoa ka ho matha:

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

Sesebelisoa sa ack se u lumella ho etsa hore ho batla ka har'a terminal ho be bonolo haholoanyane hape ho be bonolo. Le ho sebelisa pipeline (ack -C 10 hello | ack lefatše) o ka etsa motsoako o matla oa ho batla le ho sefa data ho sistimi ea lifaele le lifaeleng ka botsona.

Source: www.habr.com

Eketsa ka tlhaloso