[*]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.