Tahan teile rääkida ühest otsinguutiliidist, mis elu oluliselt lihtsustab. Kui jõuan serverisse ja pean midagi otsima, kontrollin esimese asjana, kas ack on installitud. See utiliit on suurepärane asendus grepile, samuti mingil määral find ja wc. Miks mitte grep? Ackil on karbist väljas ilusamad sätted, inimloetavad valikud, perl regex ja konfiguratsioonisüsteem. Kui sulle meeldib (peab) läbi terminali otsida, siis tasub kindlasti proovida.
Põhifunktsioonid
Ack on vaikimisi rekursiivne ja vähemate valikute kirjutamine on alati hea mõte.
Võime kasutada lippu -wkäskida utiliidil otsida meie mustri näidet, mis on ümbritsetud sõnapiiridega (tühik, kaldkriipsud jne).
ack -w mysql
Ack toetab failitüübi järgi otsimist. Näiteks leiame mooduli versiooni json-failidest.
ack --json '"version":s+"d+.d+.d+"'
Toetatud failitüüpide täielikku loendit saab vaadata kasutades:
ack --help-types
Sageli peate näiteks loendama, mitu korda mõni fraas logifailis ilmub, et mõista, kui palju andmeid skript töötles.
Loendame, mitu korda protsessi toimub failis test.log, arvestamata juhtumit (-i).
Me ei saa loendada esinemisi mitte ainult ühes konkreetses failis, vaid rühmas. Lõpetagem sõna mysql eelmine otsing: loendage sõnade esinemiste arv (-st) *.js-failides(--js), välja arvatud failid, millest midagi ei leitud (-h) ja tulemuse kokkuvõtmist.
# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql
Lisaks saame üksikasjaliku aruande iga faili esinemiste arvu kohta, kasutades (-l)
ack --js -w -cl mysql
Kui vajate otsingu jaoks täiendavat konteksti, võite küsida ack
näita ridu kuni (-B) ja pärast (-A) leitud avaldisest. Selleks tuleb pärast suvandit määrata ridade arv, mida tuleb näidata.
# 2 строки до
ack --js --column -B 2 "query.once('" ./lib/
# 2 строки после
ack --js --column -A 2 "query.once('" . /lib/
Ja kui vajate mõlemat, siis kasutage (-C)
ack --js --column -C 2 "query.once('" ./lib/
On ka võimalus (-v) otsingu ümberpööramiseks, st joonte kuvamiseks, mis ei sisalda antud mustrit.
Regulaaravaldis
Erinevalt grepist kasutab Ack Perliga ühilduvaid väljendeid.
Minu jaoks on see suur pluss; ma ei pea regulaaravaldiste jaoks eraldi süntaksit meeles pidama.
ack 'vars+adds+'
Keerulisem näide
ack '*s+[vd+.d+.d+]'
Sageli soovite tulemustesse jätta ainult selle, mis mallile sobib. Siin aitab suvand --output (-o)
ack -o '*s+[vd+.d+.d+]'
Lisaks saame sulgude abil valida leitud osa ja sellele väljundis juurde pääseda muutuja $[grupi number] kaudu. Näiteks,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ackil on kasulikke valikuid --vahemiku algus и --vahemiku lõpp. Nad aitavad, kui
Andmeid ei salvestata ühel real, vaid mitmerealisel kujul.
Näiteks on sql-koodiga fail
Eraldame veergude nimed. Ploki algus on rida, mis algab tähega SELECT ja lõpp on rida, mis algab tähega FROM.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Kui otsinguavaldis sisaldab erimärke, nagu punkt, sulud ja muud, saate kasutada suvandit, et neid mitte vältida kasutades -Q.
# Поиск с экранированием
ack --json 'mysql.'
# Поиск без экранирования
ack --json -Q mysql.
Töötamine failidega
Hankige konkreetse laiendiga failide loend
ack -f --js
Otsige üles kõik js-failid, mille nimi algab tähega P*, kasutades suvandit (-g).
ack -g --js '/Pa.+.js$'
Konfiguratsioon
Utiliidil on oma konfiguratsioonifail. Teil võib olla nii kasutaja globaalne konfiguratsioon (~/.ackrc) kui ka kohalik konfiguratsioon konkreetse kausta jaoks (peate kausta looma .ackrc-faili).
Enamikku konfiguratsioonides kirjutatud valikuid saab kutsumisel käsitsi määrata. Vaatame mõnda neist.
Ignoreeri otsimisel kausta
--ignore-dir=dist
Lisame kohandatud failitüübi -vue.
--type-add=vue:ext:js,vue
Nüüd saate failide otsimiseks kasutada suvandit --vue .vue. Näiteks: ack --vue rakendus.
Selle valiku jaoks saate määrata laienduste loendi. Näiteks siin, kui kasutate -vue, töödeldakse järgmist: .js failid.
Ignoreeri faile, näiteks minimeeritud *.min.js
--ignore-file=match:/.min.js$/
Paigaldamine
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
Paigaldamine saidilt
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack
Redigeerijate pluginad:
Järeldus
Need pole veel kõik võimalused. Funktsioonide täielikku loendit saab vaadata käivitades:
ack –-help
# или
ack --man
Ack-utiliit võimaldab muuta terminalis otsimise mugavamaks ja paindlikumaks. Ja torujuhtme kasutamine (ack -C 10 tere | ack maailm) saate luua võimsa kombaini andmete otsimiseks ja filtreerimiseks failisüsteemis ja failides endis.
Allikas: www.habr.com