Želim vam povedati o enem pripomočku za iskanje, ki močno poenostavi življenje. Ko pridem do strežnika in moram nekaj poiskati, najprej preverim, ali je ack nameščen. Ta pripomoček je odlična zamenjava za grep, do neke mere pa tudi za find in wc. Zakaj ne grep? Ack ima lepše nastavitve takoj po namestitvi, bolj berljive možnosti, perl regex in konfiguracijski sistem. Če radi (morate) iskati po terminalu, ga vsekakor preizkusite.
Osnovne lastnosti
Ack je privzeto rekurziven in pisanje manj možnosti je vedno dobra ideja.
Lahko uporabimo zastavo -wda pripomočku povemo, naj poišče primerek našega vzorca, obkroženega z besednimi mejami (presledki, poševnice itd.).
ack -w mysql
Ack podpira iskanje po vrsti datoteke. Na primer, poiščimo različico modula v datotekah json.
ack --json '"version":s+"d+.d+.d+"'
Celoten seznam podprtih vrst datotek si lahko ogledate z:
ack --help-types
Pogosto morate na primer prešteti, kolikokrat se fraza pojavi v dnevniški datoteki, da razumete, koliko podatkov je skript obdelal.
Štejemo, kolikokrat se proces pojavi v datoteki test.log, pri čemer ne upoštevamo velikih in malih črk (-i).
Pojavitve lahko štejemo ne samo v eni določeni datoteki, ampak v skupini. Zaključimo prejšnje iskanje besede mysql: preštejmo število pojavitev besed (-od) v datotekah *.js(--js), razen datotek, v katerih ni bilo najdenega ničesar (-h) in seštevanje rezultata.
# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql
Poleg tega lahko dobimo podrobno poročilo o številu pojavitev v vsaki datoteki z uporabo (-l)
ack --js -w -cl mysql
Če potrebujete dodaten kontekst za svoje iskanje, lahko vprašate ack
prikaži vrstice do (-B) in potem (-A) najdenega izraza. Če želite to narediti, morate za možnostjo določiti število vrstic, ki jih je treba prikazati.
# 2 строки до
ack --js --column -B 2 "query.once('" ./lib/
# 2 строки после
ack --js --column -A 2 "query.once('" . /lib/
In če potrebujete oboje, uporabite (-Od)
ack --js --column -C 2 "query.once('" ./lib/
Obstaja tudi možnost (-v), da obrnete iskanje, tj. prikažete vrstice, ki ne vsebujejo danega vzorca.
Vsakdanje izražanje
Ack za razliko od grep uporablja Perl združljive izraze.
Zame je to velik plus; ni mi treba zapomniti ločene sintakse za regularne izraze.
ack 'vars+adds+'
Bolj zapleten primer
ack '*s+[vd+.d+.d+]'
Pogosto želite v rezultatih pustiti le tisto, kar ustreza predlogi. Tu bo v pomoč možnost --output (-o)
ack -o '*s+[vd+.d+.d+]'
Poleg tega lahko z uporabo oklepajev izberemo najdeni del in dostopamo do njega v izhodu prek spremenljivke $[številka skupine]. na primer
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack ima uporabne možnosti --začetek obsega и --konec obsega. Pomagajo, ko
Podatki niso shranjeni v eni vrstici, ampak v večvrstični obliki.
Na primer, obstaja datoteka s kodo sql
Izluščimo imena stolpcev. Začetek bloka bo vrstica, ki se začne z SELECT, konec pa vrstica, ki se začne z FROM.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Če iskalni izraz vsebuje posebne znake, kot so pika, oklepaj in drugi, lahko uporabite možnost, da jim ne uidete z uporabo -Q.
# Поиск с экранированием
ack --json 'mysql.'
# Поиск без экранирования
ack --json -Q mysql.
Delo z datotekami
Pridobite seznam datotek z določeno pripono
ack -f --js
Poiščite vse datoteke js, katerih ime se začne s P* z možnostjo (-g).
ack -g --js '/Pa.+.js$'
Konfiguracija
Pripomoček ima svojo konfiguracijsko datoteko. Imate lahko globalno konfiguracijo za uporabnika (~/.ackrc) in lokalno za določeno mapo (v mapi morate ustvariti datoteko .ackrc).
Večino možnosti, zapisanih v konfiguracijah, je mogoče ob klicu določiti ročno. Poglejmo si jih nekaj.
Prezri mapo pri iskanju
--ignore-dir=dist
Dodajmo vrsto datoteke po meri -vue.
--type-add=vue:ext:js,vue
Zdaj lahko uporabite možnost --vue za iskanje datotek .vue. Na primer: Aplikacija ack --vue.
Za to možnost lahko določite seznam razširitev. Na primer, tukaj bo pri uporabi -vue obdelano naslednje: datoteke .js.
Prezrite datoteke, na primer pomanjšane *.min.js
--ignore-file=match:/.min.js$/
Namestitev
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
Namestitev s spletnega mesta
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack
Vtičniki za urejevalnike:
Zaključek
To niso vse možnosti. Celoten seznam funkcij si lahko ogledate tako, da zaženete:
ack –-help
# или
ack --man
Pripomoček ack vam omogoča, da bo iskanje v terminalu bolj priročno in prilagodljivo. In z uporabo cevovoda (ack -C 10 pozdravljeni | ack svet) lahko ustvarite zmogljivo kombinacijo za iskanje in filtriranje podatkov v datotečnem sistemu in v samih datotekah.
Vir: www.habr.com