[structured grep]. Herramienta para buscar patrones que opera sobre regiones de texto en lugar de líneas completas, lo que la hace especialmente potente para archivos con estructura definida como SGML, HTML, C, TeX, correos, etc. A diferencia de grep [ver], sgrep puede identificar bloques anidados, delimitados por etiquetas o caracteres específicos, y realizar consultas sobre esas regiones.
$ sgrep -c '"id -u"' script
$ sgrep '"[" .. "]"' script
$ sgrep '"case $1 in" ._ "esac"' script
$ sgrep '"case $1 in" _. "esac"' script
$ sgrep '"case $1 in" __ "esac"' script
$ sgrep 'outer("{" .. "}" containing ("sort" or "nest"))' eval.c
$ sgrep -o "%f:%r" '"\n" _. "\n" containing "sort" not containing "nest"' *.c
$ sgrep '"/*" quote "*/"' archivo.c
$ sgrep '"From:" .. "\n"' mailbox
$ sgrep '"if" not in ("/*" quote "*/" or ("\n#" .. "\n")) .. ("(" .. ")")' *.c
$ sgrep '"<title>" .. "</title>"' archivo.html
Opciones útiles
-l --> Formato largo: muestra número de región, archivo, posiciones
-o "%f:%r" --> Formato de salida personalizado [`%f`=archivo, `%r`=texto, `%s`=inicio, `%e`=fin]
-i --> Ignora mayúsculas/minúsculas
-g html --> Usa el scanner HTML integrado
-g sgml --> Usa el scanner SGML integrado
-g xml --> Usa el scanner XML integrado
-f archivo --> Lee la expresión de región desde un archivo
-S --> [Modo stream] trata múltiples archivos como un solo flujo continuo [-S file1 file2 file3...]