He estado investigando mucho sobre esto, pero todavía no lo tengo claro. ¿Qué significa límite de palabra ? ¿Qué hace?
Entonces, por ejemplo, ¿alguien podría explicarme este comando por favor?
egrep '\b[A-Z]+\b' filename.sh
grep
regular-expression
usuario36683
fuente
fuente
[azA-Z0-9_]
. Consulte el manualegrep(1)
, quizás la doumentation para las expresiones regulares en uso.Respuestas:
Como se describe aquí , por ejemplo, coincide entre palabras:
Aquí hay ejemplos de cada uno de esos casos:
Para la cadena
foobar
, el primer caso coincidePara la cadena
foobar
, el segundo caso coincidePara la cadena
foo bar
, el tercer caso coincidiráLo que califica como un carácter de palabra depende de la implementación específica de la expresión regular. Sin embargo, en todos los casos, las letras (
[a-z]
y[A-Z]
), los números ([0-9]
) y_
se consideran caracteres de palabras.Entonces, la expresión regular de ejemplo que publicó (
\b[A-Z]+\b
) significa encontrar la cadena más larga que se encuentra entre los límites de dos palabras y que consiste solo en letras mayúsculas. Puede ser más fácil de explicar con un ejemplo:fuente
egrep
(ni/usr/xpg4/bin/egrep
) no trata de\b
esta manera. Por ejemplo,echo "FOOBAR" | egrep '\b[A-Z]+\b'
no coincidiría.Vamos a dividirlo:
[A-Z]
representa cualquier carácter en la clase de caracteres[ABCDEFGHIJKLMNOPQRSTUVWXYZ]
.[A-Z]+
representa una o más ocurrencias de mayúsculas. Ejemplo partidos serían:A
,HELLO
,IS
,I
,ELEPHANT
, etc.'\bINDIA\b'
: es exactamente como una PALABRA ENTERA para buscar la palabraINDIA
en mayúscula. Sería NO coincidirINDIANA
. Aplicando así el mismo principio:'\b[A-Z]+\b'
buscaría palabras enteras que tengan una o más letras en mayúscula.egrep '\b[A-Z]+\b' filename.sh
lo tanto , buscaría palabras que tengan una o más letras todas en mayúscula en el archivo -filename.sh
.\b
- Es exactamente como una búsqueda de palabras completas.fuente