Ack je bolji od grep-a

Želim vam reći o jednom uslužnom programu za pretraživanje koji uvelike pojednostavljuje život. Kad dođem do servera i trebam nešto potražiti, prvo provjerim je li ack instaliran. Ovaj uslužni program je izvrsna zamjena za grep, kao i find i wc u određenoj mjeri. Zašto ne grep? Ack ima bolje postavke izvan okvira, više čitljivih opcija, perl regex i konfiguracijski sustav. Ako volite (morate) pretraživati ​​preko terminala, onda biste ga svakako trebali isprobati.

Osnovne značajke

Ack je rekurzivan prema zadanim postavkama, a pisanje manje opcija uvijek je dobra ideja.

Možemo koristiti zastavu -wreći uslužnom programu da traži primjerak našeg uzorka okruženog granicama riječi (praznina, kose crte, itd.).

ack -w mysql

Ack je bolji od grep-a

Ack podržava pretraživanje prema vrsti datoteke. Na primjer, pronađimo verziju modula u json datotekama.

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

Ack je bolji od grep-a

Cjeloviti popis podržanih vrsta datoteka može se vidjeti pomoću:

ack --help-types

Često morate izbrojati koliko se puta fraza pojavljuje u datoteci dnevnika, na primjer, da biste shvatili koliko je podataka skripta obradila.

Ack je bolji od grep-a
Brojimo koliko se puta proces pojavljuje u datoteci test.log, ne uzimajući u obzir velika i mala slova (-i).

Možemo brojati pojavljivanja ne samo u jednoj određenoj datoteci, već u grupi. Završimo prethodnu pretragu riječi mysql: izbrojimo broj pojavljivanja riječi (-iz) u *.js datotekama (--js), isključujući datoteke u kojima ništa nije pronađeno (-h) i zbrajanje rezultata.

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

Ack je bolji od grep-a

Osim toga, možemo dobiti detaljno izvješće o broju pojavljivanja u svakoj datoteci pomoću (-l)

ack --js -w -cl mysql

Ack je bolji od grep-a

Ako vam je potreban dodatni kontekst za vaše pretraživanje, možete pitati ack
prikaži retke do (-B) i poslije (-A) pronađenog izraza. Da biste to učinili, nakon opcije morate navesti broj redaka koji se trebaju prikazati.

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

Ack je bolji od grep-a

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

Ack je bolji od grep-a

A ako trebate oboje, upotrijebite (-IZ)

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

Postoji i opcija (-v) za invertiranje pretraživanja, tj. za prikaz redaka koji ne sadrže zadani uzorak.

Uobičajeni izraz

Ack, za razliku od grepa, koristi Perl kompatibilne izraze.
Za mene je ovo veliki plus; ne moram pamtiti zasebnu sintaksu za regularne izraze.

ack 'vars+adds+'

Ack je bolji od grep-a

Složeniji primjer

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

Ack je bolji od grep-a

Često u rezultatima želite ostaviti samo ono što odgovara predlošku. Ovdje će vam pomoći opcija --output (-o)

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

Ack je bolji od grep-a

Osim toga, korištenjem zagrada možemo odabrati pronađeni dio i pristupiti mu u izlazu kroz varijablu $[broj grupe]. Na primjer,

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

Ack je bolji od grep-a

Ack ima korisne opcije --početak raspona и --kraj raspona. Pomažu kada
Podaci se ne pohranjuju u jednom redu, već u obliku s više redaka.

Na primjer, postoji datoteka sa sql kodom

Ack je bolji od grep-a

Izdvojimo imena stupaca. Početak bloka bit će redak koji počinje s SELECT, a kraj će biti redak koji počinje s FROM.

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

Ack je bolji od grep-a

Ako izraz za pretraživanje sadrži posebne znakove kao što su točka, zagrada i drugi, tada kako ih ne biste izbjegli koristeći , možete koristiti opciju -Q.

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

Ack je bolji od grep-a

Rad s datotekama

Dobijte popis datoteka s određenim nastavkom

ack -f --js

Ack je bolji od grep-a

Pronađite sve js datoteke čije ime počinje s P* pomoću opcije (-g).

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

Ack je bolji od grep-a

Konfiguracija

Uslužni program ima vlastitu konfiguracijsku datoteku. Možete imati i globalnu konfiguraciju za korisnika (~/.ackrc) i lokalnu za određenu mapu (morate stvoriti .ackrc datoteku u mapi).

Većina opcija koje su napisane u konfiguracijama mogu se ručno odrediti kada se pozovu. Pogledajmo neke od njih.

Zanemari mapu prilikom pretraživanja

--ignore-dir=dist

Dodajmo prilagođenu vrstu datoteke -vue.

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

Sada možete koristiti opciju --vue za pretraživanje datoteka .vue. Na primjer: aplikacija ack --vue.
Za ovu opciju možete odrediti popis proširenja. Na primjer, ovdje, kada koristite -vue, obradit će se sljedeće:
.js datoteke.

Ignorirajte datoteke, na primjer umanjene *.min.js

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

Instalacija

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 stranice

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

Dodaci za uređivače:

Zaključak

Ovo nisu sve mogućnosti. Potpuni popis funkcija možete pogledati pokretanjem:

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

Uslužni program ack omogućuje vam da pretraživanje na terminalu učinite praktičnijim i fleksibilnijim. I korištenje cjevovoda (ack -C 10 zdravo | ack svijet) možete stvoriti moćnu kombinaciju za pretraživanje i filtriranje podataka u datotečnom sustavu iu samim datotekama.

Izvor: www.habr.com

Dodajte komentar