Ack hè megliu cà grep

Vogliu parlà di una utilità di ricerca chì simplifica assai a vita. Quandu ghjunghje à u servitore è aghju bisognu di circà qualcosa, a prima cosa chì facciu hè di verificà se ack hè stallatu. Questa utilità hè un sustitutu eccellente per grep, è ancu truvà è wc in una certa misura. Perchè micca grep? Ack hà paràmetri più belli fora di a scatula, opzioni più leghjite da l'omu, regex perl è un sistema di cunfigurazione. Se ti piace (avè da) circà à traversu u terminal, allora duvete definitivamente pruvà.

Funzioni basi

Ack hè recursivu per difettu, è scrive menu opzioni hè sempre una bona idea.

Pudemu aduprà una bandiera -wper dì à l'utilità di circà una istanza di u nostru mudellu circundatu da cunfini di e parolle (spazi bianchi, slashes, etc.).

ack -w mysql

Ack hè megliu cà grep

Ack supporta a ricerca per tipu di fugliale. Per esempiu, truvemu a versione di u modulu in i fugliali json.

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

Ack hè megliu cà grep

Una lista cumpleta di i tipi di schedari supportati pò esse vistu cù:

ack --help-types

Spessu avete bisognu di cuntà quante volte una frasa apparisce in un schedariu di log, per esempiu, per capiscenu quantu dati u script processatu.

Ack hè megliu cà grep
Contemu quante volte u prucessu si verifica in u schedariu test.log, senza piglià in contu u casu (-i).

Pudemu cuntà l'occurrence micca solu in un schedariu specificu, ma in un gruppu. Finalizemu a ricerca precedente per a parolla mysql: cuntate u numeru di l'occurrence di e parolle (-s) in i schedari *.js (--js), escludendu i fugliali in quale nunda hè statu trovu (-h) è riassume u risultatu.

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

Ack hè megliu cà grep

Inoltre, pudemu avè un rapportu detallatu nantu à u numeru di occorrenze in ogni schedariu usendu (-l)

ack --js -w -cl mysql

Ack hè megliu cà grep

Sè avete bisognu di cuntestu supplementu per a vostra ricerca, pudete dumandà ack
mostra e linee finu à (-B) è dopu (-A) di l'espressione truvata. Per fà questu, avete bisognu di specificà dopu à l'opzione u numeru di linii chì deve esse mustratu.

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

Ack hè megliu cà grep

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

Ack hè megliu cà grep

È se avete bisognu di i dui, allora utilizate (-CUN)

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

Ci hè ancu una opzione (-v) per invertisce a ricerca, vale à dì mostra linee chì ùn cuntenenu micca un mudellu datu.

Espressione regulare

Ack, a differenza di grep, usa espressioni compatibili con Perl.
Per mè questu hè un grande plus; Ùn aghju micca da ricurdà una sintassi separata per l'espressioni regulare.

ack 'vars+adds+'

Ack hè megliu cà grep

Esempiu più cumplessu

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

Ack hè megliu cà grep

Spessu vulete lascià in i risultati solu ciò chì currisponde à u mudellu. L'opzione --output aiuterà quì (-o)

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

Ack hè megliu cà grep

Inoltre, usendu parentesi, pudemu selezziunà a parte truvata è accede à questu in output through the $[group number] variable. Per esempiu,

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

Ack hè megliu cà grep

Ack hà opzioni utili --range-start и --range-end. Aiutanu quandu
I dati sò almacenati micca in una linea, ma in forma multi-linea.

Per esempiu, ci hè un schedariu cù codice sql

Ack hè megliu cà grep

Estrattemu i nomi di colonna. U principiu di u bloccu serà una linea chì principia cù SELECT, è a fine serà una linea chì principia cù FROM.

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

Ack hè megliu cà grep

Se l'espressione di ricerca cuntene caratteri spiciali cum'è un periodu, un parentesi, è altri, allora per ùn scappà micca cù , pudete aduprà l'opzione -Q.

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

Ack hè megliu cà grep

U travagliu cù i schedari

Ottene una lista di schedari cù una estensione specifica

ack -f --js

Ack hè megliu cà grep

Truvate tutti i fugliali js chì u nome cumencia cù P * usendu l'opzione (-g).

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

Ack hè megliu cà grep

Cunfigurazione

L'utilità hà u so propiu schedariu di cunfigurazione. Pudete avè una cunfigurazione globale per l'utilizatore (~/.ackrc) è una locale per un cartulare specificu (avete bisognu di creà un schedariu .ackrc in u cartulare).

A maiò parte di l'opzioni chì sò scritte in i cunfigurazioni ponu esse specificate manualmente quandu chjamate. Fighjemu uni pochi di elli.

Ignora u cartulare quandu cercate

--ignore-dir=dist

Aghjunghjemu un tipu di schedariu persunalizatu -vue.

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

Avà pudete aduprà l'opzione --vue per circà i schedari .vue. Per esempiu: ack --vue App.
Pudete specificà una lista di estensioni per questa opzione. Per esempiu, quì, quandu si usa -vue, i seguenti seranu processati:
i schedari .js.

Ignore i schedari, per esempiu minified *.min.js

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

rimarchevuli

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

Installazione da u situ

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

Plugins per editori:

cunchiusioni

Quessi ùn sò micca tutte e pussibulità. A lista cumpleta di e funzioni pò esse vistu da eseguisce:

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

L'utilità ack permette di fà a ricerca in u terminal più còmuda è flessibile. È usendu pipeline (ack -C 10 salutu | u mondu sanu) pudete creà una combinazione putente per a ricerca è filtrazione di dati in u sistema di fugliale è in i schedari stessi.

Source: www.habr.com

Add a comment