Saltar al contenido

Escapar * con expresiones regulares y Grep

[*]Sé libre de divulgar nuestra página y códigos en tus redes, necesitamos de tu ayuda para ampliar esta comunidad.

Solución:

[*]También puede lograr lo mismo instruyendo grep que el string es para que coincida es un fijo string. El interruptor para hacer esto es -F o --fixed-strings.

-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.)

[*]Así que algo como esto lo hará:

$ grep -F "**" somefile.txt

Ejemplo

$ cat somefile.txt
** blah
blahblah
** hi

[*]Grepping el archivo produce esto:

$ grep -F "**" somefile.txt
** blah
** hi

[*]Así que prueba:

egrep "^**" YOUR_FILE

[*]No olvides usar comillas dobles.

[*]Nota: Utilizar egrep en lugar de grep.

Si quieres usar grep utilizar grep -E

[*]En:

grep ** fileName

[*]Las barras invertidas se utilizan para escapar de la * en la concha (donde * es un operador global).

[*]Qué grep recibe como su segundo argumento es un string de dos personajes: **.

[*]Como expresión regular, eso significa cualquier número (0 o más) de caracteres de estrellapor lo que básicamente coincide en todas partes ya que también coincide con el vacío string lo que explica por qué obtienes todas las líneas del archivo.

[*]Porque * es especial para grep expresiones regulares así como, necesitas escapar allí también. Lo mejor es usar comillas simples en lugar de barras invertidas para escapar * al shell (porque las comillas simples son comillas fuertes que escapan de todos los caracteres excepto del propio carácter de comillas simples), y use barras invertidas para escapar * a grep. Las comillas dobles también funcionarían en ese caso, pero tenga en cuenta que las barras invertidas siguen siendo especiales para el shell dentro de las comillas dobles.

[*]Entonces:

grep '**' somefile.txt

[*](con * escapó, por lo que ya no son operadores de expresiones regulares, sino que se consideran caracteres literales) devolvería las líneas de somefile.txt que contienen una secuencia de 2 caracteres de estrella. Si desea que se encuentren solo al comienzo de la línea, debe usar el operador de expresión regular de anclaje ^:

grep '^**' somefile.txt

[*]Una forma alternativa de * no tomarse como un operador de expresiones regulares sería usar rangos de caracteres:

grep '^[*][*]' somefile.txt

[*]Una forma alternativa de especificar dos personajes estrella es escribirlo:

grep '^*2' somefile.txt

[*](donde { es otro operador de expresiones regulares) que es más fácil de leer si usa expresiones regulares extendidas como cuando pasa el -E opción a grep (evitar egrep ya que no es estándar):

grep -E '^*2' somefile.txt

[*](en expresiones regulares extendidas, { es el operador de expresiones regulares).

[*]Puedes secundar nuestro estudio poniendo un comentario y dejando una puntuación te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *