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 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+"'
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.
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
Inoltre, pudemu avè un rapportu detallatu nantu à u numeru di occorrenze in ogni schedariu usendu (-l)
ack --js -w -cl mysql
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/
# 2 строки после
ack --js --column -A 2 "query.once('" . /lib/
È 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+'
Esempiu più cumplessu
ack '*s+[vd+.d+.d+]'
Spessu vulete lascià in i risultati solu ciò chì currisponde à u mudellu. L'opzione --output aiuterà quì (-o)
ack -o '*s+[vd+.d+.d+]'
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à 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
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
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.
U travagliu cù i schedari
Ottene una lista di schedari cù una estensione specifica
ack -f --js
Truvate tutti i fugliali js chì u nome cumencia cù P * usendu l'opzione (-g).
ack -g --js '/Pa.+.js$'
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