GNU/Linux >> Tutoriales Linux >  >> Linux

¿Confundido sobre el límite de la palabra?

He estado investigando mucho sobre esto, pero todavía no lo tengo claro. ¿Qué significa límite de palabras ¿significar? ¿Qué hace?

Entonces, por ejemplo, ¿alguien podría explicarme este comando, por favor?

egrep 'b[A-Z]+b' filename.sh

Respuesta aceptada:

Como se describe aquí, por ejemplo, coincide con entre palabras:

Hay tres posiciones diferentes que califican como límites de palabras:

  1. Antes del primer carácter de la cadena, si el primer carácter es un carácter de palabra.
  2. Después del último carácter de la cadena, si el último carácter es un carácter de palabra.
  3. 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:

  1. Para la cadena foobar , el primer caso coincide

     foobar
    ^-----here
    
  2. Para la cadena foobar , el segundo caso coincide

    foobar
          ^--here
    
  3. 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] ), números ([0-9] ) y _ se consideran caracteres de palabras.

Entonces, la expresión regular de ejemplo que publicaste (b[A-Z]+b ) significa encontrar la cadena más larga que se encuentra entre dos límites de palabras y que consta solo de letras mayúsculas. Podría 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

Linux
  1. ¿Usando Word Wrap con Mc?

  2. ¿Confundido acerca de Grep y el comodín *?

  3. Obtener carácter sin bloqueo

  4. ¿menos es más? ¿Es más menos? Estoy tan confundida

  5. Cómo desenvolver texto de 80 caracteres

Tutorial de Programación en C Parte 5 - Variables de carácter

[Revisión] Pear OS 8:Todo se trata de la apariencia

¿Confundido acerca de stdin, stdout y stderr?

Escapar de un carácter de estrella (*) en bash

Varias preguntas sobre la codificación de caracteres del sistema de archivos en Linux

Preguntas sobre el ID de usuario guardado