El comando grep es uno de los más utilizados en linux y ahorra mucho tiempo cuando debes buscar dentro de archivos. El comando toma una expresión regular de la línea de comandos, lee la entrada estándar o una lista de archivos, e imprime las líneas que contengan coincidencias para la expresión regular.
Para entender su comportamiento lo mejor será poner algunos ejemplos:
Supongamos que tenemos dos archivos con los siguientes textos:
Mostrar todas las líneas que contengan la cadena "agua"
Mostrar todas las líneas que contengan la cadena "agua" (sin diferenciar mayúsculas y minúsculas)
Mostrar todas las líneas que NO contengan la cadena "agua"
Mostrar todas las líneas que NO contengan la cadena "agua" (sin diferenciar mayúsculas y minúsculas)
Mostrar todas las líneas que contengan la cadena "agua", luego cualquier texto (*) y la cadena "no".
Para saber todas opciones del comando grep consulta la ayuda.
http://apuntes-para-no-olvidar.blogspot.com/2011/08/utilizar-el-comando-grep.html
Para entender su comportamiento lo mejor será poner algunos ejemplos:
Supongamos que tenemos dos archivos con los siguientes textos:

Mostrar todas las líneas que contengan la cadena "agua"
dijo:$ grep agua *

Mostrar todas las líneas que contengan la cadena "agua" (sin diferenciar mayúsculas y minúsculas)
dijo:$ grep -i agua *

Mostrar todas las líneas que NO contengan la cadena "agua"
dijo:$ grep -v agua *

Mostrar todas las líneas que NO contengan la cadena "agua" (sin diferenciar mayúsculas y minúsculas)
dijo:$ grep -iv agua *

Mostrar todas las líneas que contengan la cadena "agua", luego cualquier texto (*) y la cadena "no".
dijo:$ grep -i agua.*no *
Para saber todas opciones del comando grep consulta la ayuda.
http://apuntes-para-no-olvidar.blogspot.com/2011/08/utilizar-el-comando-grep.html