Ack better grep

Je veux parler d'un utilitaire de recherche qui simplifie considérablement la vie. Lorsque j'arrive sur le serveur et que je dois chercher quelque chose, la première chose que je vérifie est de savoir si ack est installé. Cet utilitaire est un excellent remplacement pour grep, ainsi que find et wc dans une certaine mesure. Pourquoi pas grep? Ack a de meilleurs paramètres prêts à l'emploi, des options plus lisibles par l'homme, des habitués de Perl et un système de configuration. Si tu aimes(devoir) recherchez dans le terminal, alors vous devriez absolument l'essayer.


Caractéristiques de base


Ack est récursif par défaut, et écrire moins d'options est toujours bon.


Nous pouvons utiliser l'indicateur -w pour indiquer à l'utilitaire de rechercher une instance de notre modèle, entourée de limites de mots (espaces blancs, barre oblique, etc.).


ack -w mysql


Ack prend en charge les recherches de type de fichier. Par exemple, recherchez la version du module dans les fichiers json.


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


Une liste complète des types de fichiers pris en charge peut être trouvée avec:


ack --help-types

Il est souvent nécessaire de calculer le nombre de fois qu'une phrase se produit dans un fichier journal, par exemple, pour comprendre la quantité de données traitées par le script.



Nous comptons le nombre de fois que le processus se produit dans le fichier test.log, non sensible à la casse ( -i ).


, . mysql: - (-) *.js (--js), (-h) .


#     
ack --js -w mysql
#    
ack --js -wch mysql


, - (-l)


ack --js -w -cl mysql


c, ack
(-B) (-A) . - , .


# 2   
ack --js --column -B 2 "query.once\('" ./lib/


# 2   
ack --js --column -A 2 "query.once\('" . /lib/


, (-)


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

(-v) , . .



Ack grep Perl .
, .


ack 'var\s+add\s+'



ack '\*\s+\[v\d+\.\d+\.\d+\]'


, . --output (-o)


ack -o '\*\s+\[v\d+\.\d+\.\d+\]'


, output $[ ]. ,


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


Ack --range-start --range-end. ,
, .


, sql



. SELECT, FROM.


ack --range-start ^SELECT --range-end ^FROM 't\d+\.' ./test.sql


, , \, -Q.


#    
ack --json 'mysql\.'    
#   
ack --json -Q mysql.




ack -f --js


js P*, (-g).


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



. (~/.ackrc), ( .ackrc).


, . .



--ignore-dir=dist

--vue.


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

--vue, .vue. : ack --vue App.
. , --vue
.js .


, , *.min.js


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


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


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

:




. , :


ack –-help
# 
ack --man

ack . pipeline (ack -C 10 hello | ack world) .


All Articles