Ya no tienes que buscar más por otros sitios porque llegaste al lugar perfecto, contamos con la solución que buscas sin complicaciones.
Solución:
egrep
es 100% equivalente agrep -E
fgrep
es 100% equivalente agrep -F
Históricamente, estos interruptores se proporcionaron en binarios separados. En algunos sistemas Unix realmente antiguos, encontrará que necesita llamar a los binarios separados, pero en todos los sistemas modernos se prefieren los conmutadores. La página man para grep tiene detalles sobre esto.
En cuanto a lo que hacen, -E
cambia grep a un modo especial para que la expresión se evalúe como una ERE (expresión regular extendida) en lugar de su coincidencia de patrón normal. Los detalles de esta sintaxis se encuentran en la página del manual.
-E, --extended-regexp
Interpretar PATRÓN como una expresión regular extendida
los -F
switch cambia grep a un modo diferente donde acepta un patrón para que coincida, pero luego divide ese patrón en una búsqueda string por línea y realiza una búsqueda OR en cualquiera de las cadenas sin hacer ninguna coincidencia de patrón especial.
-F, --fixed-strings
Interprete PATRÓN como una lista de cadenas fijas, separadas por líneas nuevas, cualquiera de las cuales debe coincidir.
Estos son algunos escenarios de ejemplo:
-
Tiene un archivo con una lista de, digamos, diez nombres de usuario de Unix en texto sin formato. Desea buscar el archivo de grupo en su máquina para ver si alguno de los diez usuarios enumerados está en algún grupo especial:
grep -F -f user_list.txt /etc/group
La razón por la que
-F
cambiar ayuda aquí es que los nombres de usuario en su archivo de patrones se interpretan como cadenas de texto sin formato. Los puntos, por ejemplo, se interpretarían como puntos en lugar de comodines. -
Desea buscar usando una expresión elegante. Por ejemplo paréntesis
()
puede usarse para indicar grupos con|
utilizado como un operador OR. Podría ejecutar esta búsqueda usando-E
:grep -E '^no(fork|group)' /etc/group
…para devolver líneas que comienzan con “nofork” o “nogroup”. Sin el
-E
cambiar, tendría que escapar de los caracteres especiales involucrados porque con la coincidencia de patrones normal, solo buscarían ese patrón exacto;grep '^no(fork|group)' /etc/group
Desde man grep
:
egrep is the same as grep -E. fgrep is the same as grep -F. Direct invocation as either egrep or fgrep is deprecated, but is provided to allow historical applications that rely on them to run unmodified.
Tu usas fgrep
o grep -F
si tu no quiero el grepped string ser interpretado como un patrón.
Tu usas egrep
o grep -E
si necesita usar una expresión regular extendida.
egrep
y fgrep
son básicamente equivalentes a grep -E
y grep -F
(respectivamente):
-E, --extended-regexp
Interpret PATTERN as an extended regular expression (ERE, see
below). (-E is specified by POSIX.)
-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by
newlines, any of which is to be matched. (-F is specified by
POSIX.)
Sin embargo, los mensajes de error pueden diferir.
Valoraciones y reseñas
Nos puedes añadir valor a nuestra información asistiendo con tu veteranía en las notas.