Želim vam reći o jednom uslužnom programu za pretraživanje koji uvelike pojednostavljuje život. Kada dođem do servera i moram nešto potražiti, prvo što radim je provjeriti da li je ack instaliran. Ovaj uslužni program je odlična zamjena za grep, kao i find i wc u određenoj mjeri. Zašto ne grep? Ack ima bolje postavke iz kutije, više opcija koje su čitljive ljudima, perl regex i konfiguracijski sistem. Ako volite (morate) da pretražujete kroz terminal, onda ga svakako trebate isprobati.
Osnovne karakteristike
Ack je po defaultu rekurzivan, a pisanje manjeg broja opcija je uvijek dobra ideja.
Možemo koristiti zastavu -wda kažemo uslužnom programu da traži primjer našeg uzorka okruženog granicama riječi (razmak, kose crte, itd.).
ack -w mysql
Ack podržava pretraživanje po tipu datoteke. Na primjer, pronađimo verziju modula u json datotekama.
ack --json '"version":s+"d+.d+.d+"'
Potpuna lista podržanih tipova datoteka može se vidjeti pomoću:
ack --help-types
Često morate izbrojati koliko se puta fraza pojavljuje u datoteci evidencije, na primjer, da biste razumjeli koliko je podataka skripta obrađivala.
Računamo koliko se puta proces dešava u test.log datoteci, ne uzimajući u obzir slučaj (-i).
Možemo brojati pojavljivanja ne samo u jednoj određenoj datoteci, već iu grupi. Završimo prethodnu pretragu riječi mysql: izbrojimo broj pojavljivanja riječi (-od) u *.js fajlovima(--js), isključujući fajlove u kojima ništa nije pronađeno (-h) i sumiranjem rezultata.
# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql
Osim toga, možemo dobiti detaljan izvještaj o broju pojavljivanja u svakoj datoteci koristeći (-l)
ack --js -w -cl mysql
Ako vam je potreban dodatni kontekst za pretragu, možete zatražiti potvrdu
prikaži linije do (-B) i poslije (-A) pronađenog izraza. Da biste to učinili, potrebno je nakon opcije navesti broj redova koji se trebaju prikazati.
# 2 строки до
ack --js --column -B 2 "query.once('" ./lib/
# 2 строки после
ack --js --column -A 2 "query.once('" . /lib/
A ako vam treba oboje, onda koristite (-C)
ack --js --column -C 2 "query.once('" ./lib/
Postoji i opcija (-v) da biste invertirali pretragu, tj. prikazali linije koje ne sadrže dati uzorak.
Regularni izraz
Ack, za razliku od grep, koristi izraze kompatibilne sa Perl-om.
Za mene je ovo veliki plus; ne moram da pamtim zasebnu sintaksu za regularne izraze.
ack 'vars+adds+'
Složeniji primjer
ack '*s+[vd+.d+.d+]'
Često želite da u rezultatima ostavite samo ono što odgovara šablonu. Opcija --output će ovdje pomoći (-o)
ack -o '*s+[vd+.d+.d+]'
Osim toga, pomoću zagrada možemo odabrati pronađeni dio i pristupiti mu u izlazu preko varijable $[group number]. Na primjer,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack ima korisne opcije --range-start и --kraj-kraj. Pomažu kada
Podaci se ne pohranjuju u jednom redu, već u višelinijskom obliku.
Na primjer, postoji datoteka sa sql kodom
Izdvojimo imena kolona. Početak bloka će biti red koji počinje sa SELECT, a kraj će biti red koji počinje sa FROM.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Ako izraz za pretraživanje sadrži posebne znakove kao što su tačka, zagrada i drugi, onda kako ih ne biste izbjegli pomoću , možete koristiti opciju -Q.
# Поиск с экранированием
ack --json 'mysql.'
# Поиск без экранирования
ack --json -Q mysql.
Rad sa fajlovima
Dobijte listu datoteka sa određenim ekstenzijom
ack -f --js
Pronađite sve js fajlove čije ime počinje sa P* koristeći opciju (-g).
ack -g --js '/Pa.+.js$'
Konfiguracija
Uslužni program ima svoju vlastitu datoteku za konfiguraciju. Možete imati i globalnu konfiguraciju za korisnika (~/.ackrc) i lokalnu za određeni folder (morate kreirati .ackrc fajl u folderu).
Većina opcija koje su napisane u konfiguracijama mogu se ručno specificirati kada se pozovu. Pogledajmo neke od njih.
Zanemari folder prilikom pretraživanja
--ignore-dir=dist
Hajde da dodamo prilagođeni tip fajla -vue.
--type-add=vue:ext:js,vue
Sada možete koristiti opciju --vue za pretraživanje datoteka .vue. Na primjer: ack --vue App.
Možete odrediti listu ekstenzija za ovu opciju. Na primjer, ovdje, kada koristite -vue, sljedeće će se obraditi: .js fajlovi.
Zanemarite datoteke, na primjer minimizirani *.min.js
--ignore-file=match:/.min.js$/
postavljanje
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
Instalacija sa sajta
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack
Dodaci za urednike:
zaključak
Ovo nisu sve mogućnosti. Kompletnu listu funkcija možete pogledati pokretanjem:
ack –-help
# или
ack --man
Ack uslužni program vam omogućava da pretraživanje u terminalu učinite praktičnijim i fleksibilnijim. I pomoću cjevovoda (ack -C 10 zdravo | ack world) možete kreirati moćnu kombinaciju za pretraživanje i filtriranje podataka u sistemu datoteka i samim datotekama.
izvor: www.habr.com