Ack mejor grep

Quiero hablar sobre una utilidad de búsqueda que simplifica enormemente la vida. Cuando llego al servidor y necesito buscar algo, lo primero que hago es verificar si ack está instalado. Esta utilidad es un gran reemplazo para grep, así como find y wc hasta cierto punto. ¿Por qué no grep? Ack tiene configuraciones más bonitas de fábrica, más opciones legibles para los humanos, clientes habituales y un sistema de configuración. Si amas(Tiene que) busca a través del terminal, entonces definitivamente deberías probarlo.


Caracteristicas basicas


Ack es recursivo por defecto, y escribir menos opciones siempre es bueno.


Podemos usar la bandera -w para indicarle a la utilidad que busque una instancia de nuestra plantilla, rodeada de límites de palabras (espacios en blanco, una barra diagonal, etc.).


ack -w mysql


Ack admite búsquedas de tipo de archivo. Por ejemplo, busque la versión del módulo en archivos json.


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


Puede encontrar una lista completa de los tipos de archivos compatibles con:


ack --help-types

A menudo es necesario calcular cuántas veces aparece una frase en un archivo de registro, por ejemplo, para comprender cuántos datos procesó el script.



Contamos cuántas veces ocurre el proceso en el archivo test.log, no distingue entre mayúsculas y minúsculas ( -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