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
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
Respuestas:
Como se describe aquí , por ejemplo, coincide entre palabras:
Hay tres posiciones diferentes que califican como límites de palabras:
- Antes del primer carácter de la cadena, si el primer carácter es un carácter de palabra.
- Después del último carácter de la cadena, si el último carácter es un carácter de palabra.
- Entre dos caracteres en la cadena, donde uno es un carácter de palabra y el otro no es un carácter de palabra.
Aquí hay ejemplos de cada uno de esos casos:
Para la cadena foobar, el primer caso coincide
foobar
^-----here
Para la cadena foobar, el segundo caso coincide
foobar
^--here
Para la cadena foo bar, el tercer caso coincidirá
foo bar
^--here, because space is not a word character
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:
echo "FOOBAR" | egrep '\b[A-Z]+\b' # Works
echo "FOO BAR" | egrep '\b[A-Z]+\b' # Works
echo "aFOOBARb" | egrep '\b[A-Z]+\b' # Does not work, we want capitals only
echo "12345" | egrep '\b[A-Za]+\b' # Does not work, no letters
echo "1FOOBAR2" | egrep '\b[A-Z]+\b' # Does not work, 1 and 2 are word chars
echo "_FOOBAR_" | egrep '\b[A-Z]+\b' # Does not work, _ is a word char
echo "#FOOBAR$" | egrep '\b[A-Z]+\b' # Works, # and $ are not word chars
egrep(ni /usr/xpg4/bin/egrep) no trata de \besta manera. Por ejemplo, echo "FOOBAR" | egrep '\b[A-Z]+\b'no coincidiría.
egrep '\b[A-Z]+\b' filename.sh
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 palabra INDIAen mayúscula. Sería NO coincidir INDIANA. 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.shlo 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.
[azA-Z0-9_]. Consulte el manualegrep(1), quizás la doumentation para las expresiones regulares en uso.