Como muchas otras, grep es una herramienta poco explotada y sobre todo en windows. Sobre todo mezclado con otros comandos.-
Lo único necesario es conocer un poco de expresiones regulares.-
A continuación, un tutorial con las cosas que me hacen ahorrar mucho tiempo.-
Para los usuarios de windows, si aún no tienen Cygwin, es lo único que les falta para sacarle provecho (como yo).-
Tutorial grep
Supongan que queremos encontrar funciones duplicadas en nuestros archivos de JavaScript. Esta técnica sirve para encontrar muchas otras cosas, sólo usen su imaginación.-
Paso 1
Con esto vamos a imprimir todas las líneas con la palabra “function” en el directorio actual (no en subdirectorios).-
# Buscar archivos JS en este directorio por la palabra "function"
grep function *.js
Paso 2
Sería más útil si supiéramos de qué archivos vienen y en qué número de líneas:
# Imprimir archivos, #s de línea y líneas que empiezan con "(espacio)function"
grep -EHn "^\s*(function \w+|\w+ \= function)" *.js
Paso 3
Dependiendo de como formatees tu JavaScript, algo como esto omitirá los comentarios, funciones anónimas y te ayudará a darte mejores resultados.-
# Imprime una lista de : function y la ordenar
grep -Eho "^\s*function \w+" *.js | sort
-E sirve para utilizar expresiones regulares extendidas.-
-h suprime la impresión de los nombres de archivo.-
-o imprime sólo la parte que concuerda con la expresión regular.-
Luego uso el “pipe” para ordenar el resultado con “sort”.-
Paso 4
Si no tienes muchas funciones/archivos en los que buscar, te bastará con revisar la lista y anotar las funciones duplicadas. Pero sigue en caso que tengas una gran lista:
# Sólo imprimir funciones duplicadas
grep -hEo "^\s*function \w+" *.js | sort | uniq -d
Felicidades! Esto sólo listará las funciones duplicadas. Por supuesto que podríamos expandir esto con “awk” u otra cosa y obtener los nombres de archivos y líneas de los duplicados, pero sería extenderse demasiado.-
Otros ejemplos
# Contar el número de funciones entre todos los archivos JS
grep -c function *.js
# Imprimir las líneas que NO TIENEN la palabra "function"
grep -v function *.js
# Listar los procesos que contienen "pidgin" (no-Windows)
ps -ef | grep pidgin
Conclusión
grep es uno de las herramientas de línea de comando más usadas, generalmente usada con “pipes” para filtrar resultados. Entenderlo es escencial para incrementar la productividad. Hay mucho más que de grep que lo que se muestra aquí.-
Sería excelente ver que usos le das en los comentarios.-
Desde eriwen