103.7 - Buscar texto con expresiones regulares: Comandos clave

Opciones de grep

ComandoDescripcionEjemplo
grep "patron" archivoBuscar patron en archivogrep "error" log.txt
grep -i "patron" archivoIgnorar mayusculas/minusculasgrep -i "error" log.txt
grep -v "patron" archivoMostrar lineas que NO coincidengrep -v "^#" config.txt
grep -c "patron" archivoContar lineas coincidentesgrep -c "error" log.txt
grep -l "patron" archivosSolo nombres de archivos con coincidenciasgrep -l "TODO" *.py
grep -L "patron" archivosSolo nombres de archivos SIN coincidenciasgrep -L "TODO" *.py
grep -r "patron" directorioBusqueda recursiva en directoriogrep -r "error" /var/log/
grep -n "patron" archivoMostrar numero de lineagrep -n "error" log.txt
grep -w "patron" archivoCoincidir solo palabras completasgrep -w "log" archivo.txt
grep -o "patron" archivoMostrar solo la parte coincidentegrep -o "[0-9]\+" datos.txt
grep -E "patron" archivoUsar expresiones regulares extendidasgrep -E "err|warn" log.txt
grep -F "cadena" archivoTratar como cadena fija (sin regex)grep -F "a.b.c" archivo.txt
grep -A N "patron" archivoN lineas despues (After)grep -A 3 "error" log.txt
grep -B N "patron" archivoN lineas antes (Before)grep -B 2 "error" log.txt
grep -C N "patron" archivoN lineas contexto (antes y despues)grep -C 2 "error" log.txt
grep -x "patron" archivoCoincidir con linea completagrep -x "exacto" archivo.txt
grep -q "patron" archivoSilencioso (solo codigo de retorno)grep -q "ok" f && echo "si"

Variantes de grep

ComandoEquivalenteUso
egrep "patron"grep -E "patron"Regex extendidas (ERE)
fgrep "cadena"grep -F "cadena"Cadena fija, sin regex

Metacaracteres - Referencia rapida

MetacaracterSignificadoFunciona en
.Cualquier caracterBRE y ERE
*Cero o mas del anteriorBRE y ERE
^Inicio de lineaBRE y ERE
$Fin de lineaBRE y ERE
[abc]Uno de los caracteres listadosBRE y ERE
[^abc]Cualquier caracter excepto los listadosBRE y ERE
[a-z]Rango de caracteresBRE y ERE
\Escape (caracter literal)BRE y ERE
\bLimite de palabraBRE y ERE

Cuantificadores BRE vs ERE

FuncionBREERE
Cero o mas**
Una o mas\++
Cero o una\??
Exactamente n\{n\}{n}
Al menos n\{n,\}{n,}
Entre n y m\{n,m\}{n,m}
Agrupacion\( \)( )
Alternancia||

Clases POSIX

ClaseEquivalenteSignificado
[[:alpha:]][a-zA-Z]Letras
[[:digit:]][0-9]Digitos
[[:alnum:]][a-zA-Z0-9]Letras y digitos
[[:upper:]][A-Z]Mayusculas
[[:lower:]][a-z]Minusculas
[[:space:]]espacios/tabs/newlinesEspacios en blanco
[[:blank:]]espacio/tabEspacio y tabulador
[[:punct:]]Puntuacion

sed con regex

ComandoDescripcionEjemplo
sed 's/viejo/nuevo/' archivoReemplazar primera ocurrencia por lineased 's/error/ERROR/' log.txt
sed 's/viejo/nuevo/g' archivoReemplazar todas las ocurrenciassed 's/error/ERROR/g' log.txt
sed 's/viejo/nuevo/gi' archivoReemplazar todas, case insensitivesed 's/error/ERROR/gi' log.txt
sed -i 's/viejo/nuevo/g' archivoEditar archivo in-placesed -i 's/foo/bar/g' config.txt
sed '/patron/d' archivoEliminar lineas que coincidensed '/^#/d' config.txt
sed '/^$/d' archivoEliminar lineas vaciassed '/^$/d' archivo.txt
sed -E 's/regex/nuevo/g' archivoUsar ERE en sedsed -E 's/[0-9]+/NUM/g' f.txt
sed 's|viejo|nuevo|g' archivoDelimitador alternativosed 's|/usr|/opt|g' paths.txt

Patrones frecuentes en examenes

PatronQue busca
^textoLineas que empiezan con “texto”
texto$Lineas que terminan con “texto”
^$Lineas vacias
^[^#]Lineas que NO empiezan con #
^[[:space:]]*$Lineas vacias o solo con espacios
.*Cualquier cosa (cero o mas caracteres)
[0-9]\{3\} (BRE)Exactamente 3 digitos
[0-9]{3} (ERE)Exactamente 3 digitos
\bpalabra\b”palabra” como palabra completa
grep -v "^$"Lineas no vacias
grep -v "^#"Lineas que no son comentarios

Codigos de retorno de grep

CodigoSignificado
0Se encontraron coincidencias
1No se encontraron coincidencias
2Error (archivo no existe, regex invalida, etc.)