1 00:00:00,240 --> 00:00:06,179 vamos a empezar explicando que son las expresiones regulares y las aplicamos al 2 00:00:06,179 --> 00:00:13,789 comando grep entonces voy poniendo aquí lo que me interesa 3 00:00:13,789 --> 00:00:18,789 vale entonces que son las expresiones regulares os acordáis que cuando 4 00:00:18,789 --> 00:00:23,089 nosotros hacíamos un ls y poníamos un asterisco o poníamos una interrogación 5 00:00:23,089 --> 00:00:26,929 entonces le estábamos diciendo que tenía que coincidir 6 00:00:26,929 --> 00:00:30,949 vale decir hay ciertos caracteres que se representaban de una manera especial 7 00:00:30,949 --> 00:00:43,289 Como por ejemplo el asterisco que quería decir cualquier combinación de caracteres, 0, 1 más, y la interrogación que quería decir en este caso cualquier carácter cuando hacíamos el comando ls. 8 00:00:44,710 --> 00:00:56,789 Entonces aquí una expresión regular lo que nos está diciendo que es un conjunto de caracteres que se utilizan para que coincida con una serie de patrones. 9 00:00:56,789 --> 00:01:06,790 Por ejemplo, Fernando asterisco. Pues tiene que coincidir que tiene que ser Fernando y luego cualquier combinación de teclas, de caracteres. 10 00:01:09,489 --> 00:01:13,709 Como hemos dicho, el asterisco y la interrogación tienen un significado especial. 11 00:01:13,909 --> 00:01:20,150 Pues obviamente hay caracteres que tienen significados especiales cuando se utilizan dentro de las expresiones. 12 00:01:20,150 --> 00:01:26,909 Y nosotros vamos a ver que hay unas expresiones básicas y hay unas expresiones extendidas. 13 00:01:27,689 --> 00:01:31,370 Son diferentes caracteres que me van a funcionar en unas y en otras. 14 00:01:32,849 --> 00:01:41,730 Te dicen que aunque no es necesario ponerlo entre comillas simples, pues que es una buena práctica que lo hagáis. 15 00:01:41,730 --> 00:01:52,349 Para evitar que el CEL lo reconozca o lo pueda interpretar como caracteres diferentes a los que están dentro de las expresiones regulares. 16 00:01:53,370 --> 00:01:56,689 Vamos a empezar por las expresiones regulares básicas. 17 00:01:57,590 --> 00:02:00,670 Empiezo por el punto. 18 00:02:01,569 --> 00:02:05,349 Un punto. ¿Qué quiere decir en este caso un punto? 19 00:02:06,129 --> 00:02:08,650 Representa cualquier carácter. 20 00:02:08,650 --> 00:02:28,449 Uno. Cualquier carácter. ¿Sí? Entonces, si yo, por ejemplo, le digo el A punto punto, quiere decir que la expresión va a coincidir con una letra A seguida de cualquier carácter, ¿vale? 21 00:02:28,449 --> 00:02:42,969 Y seguida de cualquier carácter. Es decir, cuando yo quiera indicar que, por ejemplo, sea fer y luego después de fer haya un carácter cualquiera, tengo que poner un punto. 22 00:02:42,969 --> 00:02:49,810 cuando nosotros teníamos el ls era una interrogación aquí es un punto si nosotros 23 00:02:49,810 --> 00:03:03,069 también podemos poner el abre y cierra vale esto es el abre y el cierra corchetes si eso 24 00:03:03,069 --> 00:03:18,150 ¿Para qué? Pues en este caso, para decirle que coincida con los contenidos, con los caracteres que hay contenidos dentro del abre y cierra corchetes, ¿sí? 25 00:03:18,949 --> 00:03:27,069 Entonces, yo dentro del corchete voy a poner una lista o un rango de caracteres, ¿vale? Una lista o un rango. 26 00:03:27,069 --> 00:03:42,990 La lista, pongo todos los caracteres juntos. A, B, C, D, ¿vale? O A, E, I, O, U. Pero si quiero indicar un rango, tengo que poner un guión, ¿vale? No sé si lo veis aquí. Tengo que poner un guión. 27 00:03:42,990 --> 00:03:58,830 Bien, es decir, que pongo un rango empezando por el carácter menor, porque sigue el estándar ASCII, tienen que estar en orden correcto, ¿vale? No vale que yo ponga D-A, tiene que ser ascendente A-D. 28 00:03:59,430 --> 00:04:11,710 Quiere decir que cualquier letra, que sea o la A o la B o la C o la D, eso es lo que quiere decir, ¿vale? Y para eso tengo que poner entre corchetes, ¿de acuerdo? ¿Sí? 29 00:04:11,710 --> 00:04:28,170 Entonces, o pongo un conjunto de caracteres en el orden que me la gana, es decir, A, J, L, M, X, 3, 8, 7, o si es un rango que está seguido, pongo el primer carácter, un guión y el último, siempre en orden. 30 00:04:28,170 --> 00:04:52,910 ¿De acuerdo? Pero aquí hay una aclaración y es este carácter que os pongo aquí, ¿vale? El gorrito que hay. Si yo pongo dentro del rango, si ese rango empieza por este gorrito, estoy aquí abajo ahora, fijaros que aquí empieza por un gorrito. 31 00:04:52,910 --> 00:05:07,189 ¿Qué quiere decir? Quiere decir que esa expresión es lo que no es ni A, ni B, ni C. Es decir, es la negar. Es negar el conjunto de caracteres que yo ponga entre el abre y cierra corchetes. 32 00:05:07,189 --> 00:05:25,189 Es decir, que no sea ninguno de la lista, ¿sí? Que no sea ni A, ni B, ni C, ¿sí? Para eso ponemos dentro de los corchetes el primer carácter que sea el gorrito, ¿de acuerdo? ¿sí? 33 00:05:25,189 --> 00:05:49,930 Vale, vamos a ver otros. El siguiente es el asterisco, y el asterisco va a tener el mismo significado que teníamos, pero cuidado, porque fijaros que me dice el carácter anterior, carácter anterior repetido cero o más veces, ¿sí? 34 00:05:49,930 --> 00:06:02,930 Por ejemplo, si yo pongo aquí una D y un asterisco, quiere decir que el carácter D va a poder estar repetido cero una o más veces. 35 00:06:03,709 --> 00:06:06,589 Cero en cero una o más veces. 36 00:06:07,569 --> 00:06:14,569 Es decir, es el asterisco, pues el carácter que está delante de él, repetido cero una o más veces. 37 00:06:14,569 --> 00:06:26,949 ¿Sí? Y luego tenemos estos dos. Que esto no es dentro del rango que hemos visto antes, es simplemente dentro de la expresión regular. 38 00:06:27,790 --> 00:06:36,889 Si yo pongo un gorrito, quiere decir que todo lo que yo ponga en esa expresión, quiere decir que la línea tiene que empezar por. 39 00:06:36,889 --> 00:06:40,490 La línea tiene que empezar por... 40 00:06:40,490 --> 00:06:48,949 Si yo pongo, por ejemplo, aquí el gorrito y una A, le estoy diciendo que la línea tiene que empezar por una A. 41 00:06:50,250 --> 00:06:52,610 Esto es para indicar todo lo que empiece por. 42 00:06:53,170 --> 00:06:56,629 Y el dólar es para indicar todo lo que termine por. 43 00:06:56,810 --> 00:07:03,949 Si yo le pongo aquí el C y le pongo un dólar, le estoy diciendo que la línea tiene que terminar por una C. 44 00:07:05,149 --> 00:07:05,670 ¿Sí? 45 00:07:06,889 --> 00:07:11,949 Entonces tenemos estas expresiones que nosotros podemos utilizar. 46 00:07:12,569 --> 00:07:16,230 Pues me voy a ir al comando grep, que es el que vamos a ver. 47 00:07:16,730 --> 00:07:20,269 Ahora voy a ir con las expresiones que me faltan, las expresiones extendidas. 48 00:07:20,269 --> 00:07:22,149 Ahí me faltaba esto, perdóname. 49 00:07:22,949 --> 00:07:27,310 Pero antes de empezar con las expresiones extendidas voy a empezar con las regulares. 50 00:07:28,269 --> 00:07:31,069 Me queda aquí dos, que me faltaban estos dos. 51 00:07:31,750 --> 00:07:36,769 Si yo quiero decirle que empieza por o termina por una palabra, 52 00:07:36,889 --> 00:07:45,470 ¿Vale? Fijaros que me dice para coincidir al principio o al final de una palabra 53 00:07:45,470 --> 00:07:48,170 ¿Vale? Ahora vamos a hacer ejemplo y lo vais a entender todo esto 54 00:07:48,170 --> 00:07:52,310 O yo le puedo decir entre llaves una let un número 55 00:07:52,310 --> 00:07:58,569 ¿Vale? Para indicar por ejemplo que quiero que se repita dos veces 56 00:07:58,569 --> 00:08:02,449 Entonces yo puedo decir C y pongo abre y cierra y pongo un 2 57 00:08:02,449 --> 00:08:05,970 Quiere decir que esa C tiene que aparecer dos veces 58 00:08:05,970 --> 00:08:15,149 Y por último me dice que si quiero buscar un carácter especial lo que debemos hacer es caparlo 59 00:08:15,149 --> 00:08:18,610 Que esto ya nos tiene que sonar, que esto es de capar 60 00:08:18,610 --> 00:08:25,910 Y para capar algo en Linux lo que vamos a hacer es preceder el carácter que queremos capar de la barra invertida 61 00:08:25,910 --> 00:08:34,830 Vamos a hacer ejemplos para que veamos cómo funciona esto 62 00:08:34,830 --> 00:08:38,850 y para eso vamos a ver el comando grep 63 00:08:38,850 --> 00:08:43,289 entonces para utilizar el comando grep me voy a ir a 64 00:08:43,289 --> 00:08:48,730 y escanea veral y habíamos creado aquí una carpetita que se llamaba viernes 65 00:08:48,730 --> 00:08:52,250 y en esta carpetita tenemos 66 00:08:52,250 --> 00:09:00,509 este ficherito que ya estábamos trabajando con él en estos días 67 00:09:00,509 --> 00:09:24,409 ¿Sí? Entonces tenemos este ficherito alumnos centro punto txt. ¿Lo veis? ¿Sí? Vale. ¿Cómo le puedo yo decir que quiero que me muestre no todo el contenido de este fichero, sino que solo quiero que me muestre las líneas que coinciden con un patrón que yo quiero decirle? 68 00:09:24,409 --> 00:09:28,750 Un patrón es algo que yo quiero buscar, que es lo que estamos haciendo con una expresión regular. 69 00:09:29,389 --> 00:09:32,090 Pues vamos a utilizar el comando grep. 70 00:09:32,629 --> 00:09:34,429 ¿Cómo funciona el comando grep? 71 00:09:34,549 --> 00:09:39,350 El comando grep le tengo que pasar qué es lo que quiero que me busque. 72 00:09:39,830 --> 00:09:47,870 Es decir, por ejemplo, yo le voy a poner, oye, quiero que me busques, por ejemplo, pues yo qué sé, smrb. 73 00:09:48,129 --> 00:09:49,769 Uno, smrb. 74 00:09:50,210 --> 00:09:50,409 ¿Sí? 75 00:09:50,409 --> 00:10:05,970 Y ahora le tengo que decir cuál es el fichero en el que quiero que me lo busque. Pues le voy a decir alumnos dentro. ¿Y qué es lo que me ha devuelto? ¿Qué es lo que me ha hecho esto? Me ha ido recorriendo línea a línea. 76 00:10:05,970 --> 00:10:20,129 ¿Sí? Es decir, lo que me ha ido haciendo es, me va la primera línea, me dice, oye, ¿hay en esta primera línea esto de aquí, 1SMRB? 77 00:10:20,549 --> 00:10:22,850 Si la respuesta es que no, no me la muestra. 78 00:10:23,330 --> 00:10:29,250 Siguiente línea, oye, ¿hay aquí 1SMRB? No, pues no me la muestra. 79 00:10:29,870 --> 00:10:32,690 Va en la siguiente, 1SMRB, no me la muestra. 80 00:10:32,690 --> 00:10:41,190 va a la siguiente aparece un smrb no me la muestra vale y aquí va viendo no me la muestra está no me 81 00:10:41,190 --> 00:10:46,289 la muestra siguiente línea está no me la muestra siguiente línea está no no me la muestra y ahora 82 00:10:46,289 --> 00:10:57,639 me voy a la siguiente y me dice oye en esta línea aparece un smrb pues efectivamente y me la muestra 83 00:10:57,639 --> 00:11:09,480 ¿Sí? ¿Lo veis? Entonces solo me muestra aquellas líneas del fichero o ficheros que yo le indique donde aparece la cadena que yo le quiero decir. 84 00:11:09,720 --> 00:11:25,379 ¿Sí? ¿Me seguís? Vale. Si yo le digo, vamos a hacer otro ejemplo, si yo le digo que me muestres un SMR, pues fijaros que me muestra todas las líneas donde aparece un SMR. 85 00:11:25,379 --> 00:11:53,440 ¿Sí? ¿De acuerdo? Vale, vamos a ir probando las expresiones regulares. Vamos a empezar por el punto. Vamos a suponer que yo quiero que me muestre todas las líneas donde aparece, en este caso, un 1, luego cualquier carácter y luego, por ejemplo, un 8. 86 00:11:53,440 --> 00:11:56,399 Entonces, ¿qué es lo que le voy a decir? 87 00:11:56,539 --> 00:11:58,000 Oye, quiero que me aparezca un 1 88 00:11:58,000 --> 00:11:59,159 Luego cualquier carácter 89 00:11:59,159 --> 00:12:00,779 ¿Cómo le digo cualquier carácter? 90 00:12:00,899 --> 00:12:01,679 Le pongo un punto 91 00:12:01,679 --> 00:12:04,860 Y luego que me aparezca un 8 92 00:12:04,860 --> 00:12:06,220 Eso es lo que le estoy diciendo 93 00:12:06,220 --> 00:12:08,840 Le estoy diciendo, búscame todas las líneas 94 00:12:08,840 --> 00:12:11,620 Donde me aparece un 1 95 00:12:11,620 --> 00:12:14,220 Luego cualquier carácter 96 00:12:14,220 --> 00:12:16,000 Y luego un 8 97 00:12:16,000 --> 00:12:18,740 Pues fijaros 98 00:12:18,740 --> 00:12:20,700 ¿Qué es lo que me devuelve? 99 00:12:20,700 --> 00:12:27,659 Un 1 cualquier carácter y un 8 100 00:12:27,659 --> 00:12:29,720 Un 1 cualquier carácter y un 8 101 00:12:29,720 --> 00:12:31,960 Un 1 cualquier carácter y un 8 102 00:12:31,960 --> 00:12:34,340 ¿De acuerdo? 103 00:12:34,960 --> 00:12:37,720 Entonces ahí ya vemos para qué sirve el punto 104 00:12:37,720 --> 00:12:41,279 Para indicar cualquier carácter 105 00:12:41,279 --> 00:12:41,700 ¿Sí? 106 00:12:41,700 --> 00:12:44,039 Si yo le digo 107 00:12:44,039 --> 00:12:47,379 Oye, que quiero que sea cualquier carácter 108 00:12:47,379 --> 00:12:50,340 Cualquier carácter 109 00:12:50,340 --> 00:12:51,600 Y un 2 110 00:12:51,600 --> 00:12:54,600 Pues fijaros 111 00:12:54,600 --> 00:13:00,379 Que me está mostrando un 1, dos caracteres cualesquiera y un 2 112 00:13:00,379 --> 00:13:02,860 Un 1, dos caracteres cualesquiera y un 2 113 00:13:02,860 --> 00:13:05,600 Un 1, dos caracteres cualesquiera y un 2 114 00:13:05,600 --> 00:13:07,100 ¿De acuerdo? ¿Sí? 115 00:13:08,360 --> 00:13:10,120 El siguiente era un rango 116 00:13:10,120 --> 00:13:14,279 Yo le puedo decir, oye, quiero que me busques 117 00:13:14,279 --> 00:13:18,299 Todas las líneas del fichero y le voy a poner un rango 118 00:13:18,299 --> 00:13:21,860 ¿Cómo le pongo un rango? Entre abre y cierra 119 00:13:21,860 --> 00:13:41,960 Y le digo, oye, quiero que sea, por ejemplo, yo qué sé, quiero que sea una B, una F o una G o una A, seguido de, yo qué sé, que me lo estoy inventando, de esto. 120 00:13:41,960 --> 00:13:53,220 Entonces, ¿qué le estoy diciendo? Oye, quiero que me busques todas las líneas que contengan o una B, o una F, o una G, o una A, seguido de una D 121 00:13:53,220 --> 00:13:55,700 Pues fijaros que la única que me he encontrado es esta 122 00:13:55,700 --> 00:14:01,279 Voy a mostrar un momentito el fichero y vamos a hacer un ejemplo 123 00:14:01,279 --> 00:14:50,320 Por ejemplo, le voy a decir que quiero que me muestre todas las líneas que sean una A, una R o una P, seguido de una B, ¿vale? 124 00:14:50,320 --> 00:14:52,879 entonces, ¿qué le estoy diciendo? 125 00:14:53,759 --> 00:14:54,919 le estoy diciendo 126 00:14:54,919 --> 00:14:57,659 oye, quiero que me busques 127 00:14:57,659 --> 00:14:59,759 todas las líneas que contengan 128 00:14:59,759 --> 00:15:01,480 o una A o una R o una B 129 00:15:01,480 --> 00:15:03,179 seguido de una B, es decir 130 00:15:03,179 --> 00:15:05,000 RB lo cumple 131 00:15:05,000 --> 00:15:07,480 porque es o una A o una R 132 00:15:07,480 --> 00:15:09,120 una P seguido de una B, perfecto 133 00:15:09,120 --> 00:15:11,200 A y una B 134 00:15:11,200 --> 00:15:13,259 perfecto, A y una B 135 00:15:13,259 --> 00:15:15,379 y perfecto, A y una B 136 00:15:15,379 --> 00:15:17,519 entonces aquí tenemos todo lo que cumple 137 00:15:17,519 --> 00:15:18,860 ¿sí? 138 00:15:20,320 --> 00:15:27,830 ¿De acuerdo? ¿Sí? Vale. 139 00:15:28,769 --> 00:15:29,950 ¿Qué es lo que le puedo decir? 140 00:15:29,950 --> 00:15:49,799 Oye, quiero que me digas que sea una R o un 1 o un 2, seguido de una L. 141 00:15:51,700 --> 00:15:54,419 Y que sea o una A o un 1. 142 00:15:55,980 --> 00:15:57,320 ¿Qué me devuelve esto? 143 00:15:58,080 --> 00:16:00,700 Dice, oye, ¿qué es lo que quiero? 144 00:16:00,700 --> 00:16:10,759 digo que sea o una r o una l vale entonces aquí tenemos una l aquí tenemos una l aquí tenemos una 145 00:16:10,759 --> 00:16:21,779 r perfecto una l una r vale una l una l es decir me está buscando todo lo que sea o una r o una 146 00:16:21,779 --> 00:16:32,389 l perfecto y seguido de que y seguido de una a o de una o de un 1 pues aquí 147 00:16:32,389 --> 00:16:37,850 seguido de un 1 perfecto seguido de una perfecto seguido de una perfecto si 148 00:16:37,850 --> 00:16:46,490 entendéis para qué es un rango sí qué es lo que le puedo decir también 149 00:16:46,490 --> 00:16:59,409 Oye, búscame todo lo que sea del 0 al 9, es decir, búscame todos los caracteres, ¿sí? 150 00:17:01,289 --> 00:17:07,890 Seguido de una arroba y yo qué sé. 151 00:17:08,869 --> 00:17:11,690 Aquí me va a devolver todo, a ver que me ponga yo por aquí. 152 00:17:11,950 --> 00:17:15,390 Y seguido de 19, 19. 153 00:17:15,390 --> 00:17:41,940 Seguido de, por ejemplo, 3 caracteres y un 8 154 00:17:41,940 --> 00:17:44,079 Le voy a decir esto de aquí 155 00:17:44,079 --> 00:17:44,980 ¿Qué me devuelve? 156 00:17:45,960 --> 00:17:49,660 Le estoy diciendo, oye, quiero que sea un número del 0 al 9 157 00:17:49,660 --> 00:17:53,140 De forma que un número del 0 al 9 158 00:17:53,140 --> 00:18:14,460 Me está dando un 1, un 5, un 0, un 6, es decir, cualquier número del 0 al 9, un rango, por eso pongo un guión, seguido de tres caracteres, seguido de tres caracteres, 1, 2 y 3. 159 00:18:14,460 --> 00:18:16,720 1, 2 y 3 160 00:18:16,720 --> 00:18:19,200 1, 2 y 3 161 00:18:19,200 --> 00:18:21,619 1, 2 y 3 162 00:18:21,619 --> 00:18:22,900 ¿Vale? Me vais viendo 163 00:18:22,900 --> 00:18:26,019 Y seguido de un 8 164 00:18:26,019 --> 00:18:27,900 ¿Sí? 165 00:18:29,039 --> 00:18:30,579 Seguido de un 8 166 00:18:30,579 --> 00:18:33,400 Pues seguido de un 8, seguido de un 8, seguido de un 8 167 00:18:33,400 --> 00:18:35,680 Seguido de un 8 y seguido de un 8 168 00:18:35,680 --> 00:18:37,460 ¿De acuerdo? 169 00:18:37,460 --> 00:18:42,279 Entonces yo ya puedo juntar el punto con el rango 170 00:18:42,279 --> 00:18:42,759 ¿Sí? 171 00:18:42,759 --> 00:18:54,759 ¿Y qué pasa si le digo todo lo que no sea un carácter? Pues si yo le pongo la virgulilla, le estoy diciendo que todo lo que no sea un carácter, 172 00:18:54,759 --> 00:19:20,339 Entonces, todo lo que no sea del 0 al 9, así que todo lo que no sea del 0 al 9 va a ser una D, una N, seguido de tres caracteres, 1, 2 y 3, 1, 2 y 3, y seguido de un 8, y seguido de un 8. 173 00:19:20,339 --> 00:19:25,759 Pues aquí tenemos seguido de un 8 y seguido de un 8, ¿de acuerdo? 174 00:19:26,640 --> 00:19:34,500 Entonces, si yo quiero que sea lo que no sea un carácter del 0 al 9, pues tengo que poner dentro, ¿vale? 175 00:19:34,819 --> 00:19:39,200 Dentro del rango tengo que empezar por el gorrito, ¿de acuerdo? 176 00:19:39,359 --> 00:19:41,579 Y es lo contrario de, ¿sí? 177 00:19:43,059 --> 00:19:45,500 Hemos visto el punto y hemos visto el rango. 178 00:19:45,779 --> 00:19:47,839 Ahora nos queda el asterisco. 179 00:19:47,960 --> 00:19:49,180 ¿Qué quiere decir el asterisco? 180 00:19:49,180 --> 00:19:50,799 Imaginaros que yo tengo 181 00:19:50,799 --> 00:19:54,339 Le decimos otra vez esto para que yo vea lo que hay 182 00:19:54,339 --> 00:19:56,819 E imaginaros que nosotros le decimos 183 00:19:56,819 --> 00:19:58,039 Quiero que me busques 184 00:19:58,039 --> 00:19:59,740 Y le voy a decir 185 00:19:59,740 --> 00:20:04,099 Que me aparezca la letra A 186 00:20:04,099 --> 00:20:08,480 Repetida cero, una o más veces 187 00:20:08,480 --> 00:20:09,460 ¿Sí? 188 00:20:10,299 --> 00:20:14,339 ¿Qué pensáis que me va a devolver esto? 189 00:20:16,119 --> 00:20:17,279 Me devuelve 190 00:20:17,279 --> 00:20:18,200 ¿Vale? 191 00:20:19,200 --> 00:20:24,259 Fijaros que todas las líneas, pero quiero que, por ejemplo, es que quiero buscar una. 192 00:20:25,799 --> 00:20:26,099 Vale. 193 00:20:26,819 --> 00:20:29,160 En lugar de la A voy a poner una X. 194 00:20:31,670 --> 00:20:34,210 ¿Y por qué me devuelve todas las líneas? 195 00:20:34,250 --> 00:20:35,950 Fijaros que me devuelve esta línea. ¿Por qué? 196 00:20:36,509 --> 00:20:37,930 ¿Cuántas veces me aparece la X? 197 00:20:38,329 --> 00:20:38,849 Ninguna. 198 00:20:39,869 --> 00:20:44,869 Entonces es la X repetido cero, esto lo cumple, una o más veces. 199 00:20:46,289 --> 00:20:47,289 ¿Me seguís? 200 00:20:47,289 --> 00:20:52,430 entonces, cuidado con el poner el asterisco 201 00:20:52,430 --> 00:20:55,089 porque el asterisco es 0, 1 o más 202 00:20:55,089 --> 00:21:00,309 si queréis decirle que aparezca la letra X por lo menos una vez 203 00:21:00,309 --> 00:21:04,470 yo pongo en este caso X y luego X asterisco 204 00:21:04,470 --> 00:21:07,490 para decirle, oye, quiero que me aparezca una X 205 00:21:07,490 --> 00:21:11,190 y luego me aparezca una X 0, 1 o más veces 206 00:21:11,190 --> 00:21:13,549 con eso le estoy diciendo que al menos me aparezca una 207 00:21:13,549 --> 00:21:16,619 ¿de acuerdo? 208 00:21:16,619 --> 00:21:22,019 Yo también le puedo decir que me muestre todas las líneas 209 00:21:22,019 --> 00:21:27,079 Y le pongo aquí del 4 al 6 210 00:21:27,079 --> 00:21:35,299 Y que me aparezca repetido 0 una más veces 211 00:21:35,299 --> 00:21:40,359 Entonces fijaros que como le he dicho 0 una más veces 212 00:21:40,359 --> 00:21:42,680 Le he cagado, porque aquí es 0 213 00:21:42,680 --> 00:21:47,339 ¿Sí? Del 4 al 6, aquí no hay ni 4 ni 6 214 00:21:47,339 --> 00:21:50,680 ¿Que yo le puedo decir esto? Sí, perfectamente 215 00:21:50,680 --> 00:21:57,900 Le digo, oye, quiero que me aparezca del 4 al 6 una vez por lo menos 216 00:21:57,900 --> 00:22:01,200 Y luego, repetido, 0 una más veces 217 00:22:01,200 --> 00:22:06,559 ¿Vale? Pues me aparece el 4 y el 6, me aparece el 5, me aparece 218 00:22:06,559 --> 00:22:08,319 ¿Me seguís? 219 00:22:08,319 --> 00:22:13,900 Entonces siempre que queráis decirle repetido 0, 1 o más veces 220 00:22:13,900 --> 00:22:19,339 El carácter anterior, es decir, siempre va a ser lo que hay anterior al asterisco 221 00:22:19,339 --> 00:22:22,880 Lo que hay al anterior repetido 0, 1 o más veces 222 00:22:22,880 --> 00:22:24,059 ¿Sí? 223 00:22:25,140 --> 00:22:26,579 Vale, ¿qué es lo que me queda? 224 00:22:27,480 --> 00:22:32,019 ¿Cómo le puedo decir yo que me muestre todas las líneas que empiezan por una A? 225 00:22:32,539 --> 00:22:35,400 Pues si yo le quiero decir todas las líneas que empiezan por una A 226 00:22:35,400 --> 00:22:38,079 Lo que le pongo es el gorrito 227 00:22:38,079 --> 00:22:44,279 y le digo, uy, perdón, y le pongo una A, ¿qué me hace esto? 228 00:22:44,740 --> 00:22:47,220 Me muestra todas las líneas que empiezan por una A. 229 00:22:47,660 --> 00:22:52,700 ¿Qué le quiero decir que me muestren todas las líneas que empiezan por una A o por una V? 230 00:22:54,160 --> 00:22:58,000 Pues me muestran las líneas que empiezan por una A o una V, ¿sí? 231 00:22:59,160 --> 00:23:03,240 ¿Cómo le puedo decir las líneas que me terminen por un 3, por ejemplo? 232 00:23:03,240 --> 00:23:11,460 pues siempre va a ser en este caso un 3 y un dólar para decirle tiene que terminar con un 3 233 00:23:11,460 --> 00:23:29,470 si yo le doy, lo he puesto bien, un segundo que no sé que estoy poniendo mal aquí 234 00:23:29,470 --> 00:23:50,710 vale una cosita, no me estaba saliendo porque como copié el ficherito de Windows 235 00:23:50,710 --> 00:23:57,710 no tenía convertido los saltos de carro porque son diferentes, los trata diferente en Windows y Linux 236 00:23:57,710 --> 00:24:17,269 Cuidado cuando copiéis, ¿vale? Entonces, o una de dos, o hacéis el ficherito aquí a pelo, el nanoalumno, ¿de acuerdo? Porque repito, aquí al final, como lo copiéis de Windows, el intro de Windows es diferente al intro de Linux, ¿de acuerdo? 237 00:24:17,269 --> 00:24:20,509 Entonces, cuidado con copiarlo, ¿de acuerdo? 238 00:24:20,589 --> 00:24:23,029 Porque os va a meter dos caracteres especiales. 239 00:24:23,130 --> 00:24:24,490 Entonces, por eso no me encontraba. 240 00:24:26,069 --> 00:24:26,230 ¿Sí? 241 00:24:28,569 --> 00:24:31,970 Vale, entonces, una vez que... 242 00:24:31,970 --> 00:24:33,509 Porque he vuelto a crear el ficherito, ¿vale? 243 00:24:33,910 --> 00:24:36,410 El ficherito, pero no lo he copiado de Windows. 244 00:24:36,549 --> 00:24:37,630 Cuidado cuando lo copiéis. 245 00:24:38,369 --> 00:24:39,829 Entonces, fijaros qué hace este comando. 246 00:24:40,190 --> 00:24:45,289 Yo en este comando le he dicho, oye, quiero que me muestre todas las líneas que terminan por una C. 247 00:24:45,289 --> 00:24:50,049 Entonces, fijaros que me está mostrando todas las líneas que terminan por una C 248 00:24:50,049 --> 00:24:51,329 ¿Sí? 249 00:24:52,630 --> 00:24:58,529 Oye, quiero que me busques todas las líneas que terminan, en este caso, por un 1 o por una C 250 00:24:58,529 --> 00:25:03,710 Pues me va a mostrar todas las líneas que terminan por un 1 o por una C 251 00:25:03,710 --> 00:25:04,450 ¿Sí? 252 00:25:04,970 --> 00:25:06,730 Pero también lo puedo combinar 253 00:25:06,730 --> 00:25:10,869 Oye, quiero que me muestre todas las líneas que empiezan por una A 254 00:25:10,869 --> 00:25:17,680 Que empiezan por una A 255 00:25:17,680 --> 00:25:20,079 y que terminen por uno C. 256 00:25:20,660 --> 00:25:23,440 Pero, ¿por qué aquí no me aparece nada? 257 00:25:24,039 --> 00:25:25,400 ¿Qué le estoy diciendo con esto? 258 00:25:25,900 --> 00:25:27,700 Que tiene que empezar por un A, 259 00:25:28,220 --> 00:25:31,339 y después del A me tiene que aparecer un 1 y una C. 260 00:25:32,900 --> 00:25:33,779 Me explico. 261 00:25:34,359 --> 00:25:35,660 Si yo edito el fichero, 262 00:25:39,650 --> 00:25:45,660 voy a añadir A, C, y ya está. 263 00:25:45,940 --> 00:25:46,940 Pongo uno C, por ejemplo. 264 00:25:48,539 --> 00:25:49,839 Si yo le digo esto, 265 00:25:51,839 --> 00:26:08,880 que empieza por una A y que termine por una C, que lo he puesto mal, es AC, que empieza por una A y, por ejemplo, AC. 266 00:26:11,490 --> 00:26:21,130 Entonces, si yo le digo este, me lo muestra. Es decir, le estoy diciendo aquí que tiene que empezar por una A y después de la A tiene que aparecer o un 1 o una C y ya está. 267 00:26:21,130 --> 00:26:24,049 Eso es lo que le estoy diciendo, por eso no me ha encontrado nada 268 00:26:24,049 --> 00:26:27,230 ¿Cómo le puedo decir todas las líneas que empiezan por una A 269 00:26:27,230 --> 00:26:31,130 Que luego haya cualquier cosa y que terminen por una C? 270 00:26:31,890 --> 00:26:34,529 Pues yo le puedo decir, oye, quiero que empiecen por A 271 00:26:34,529 --> 00:26:35,470 Hasta aquí bien 272 00:26:35,470 --> 00:26:39,369 Después de la A, tiene que haber cualquier carácter 273 00:26:39,369 --> 00:26:44,069 Pero cualquier carácter repetidas las veces que le dé la gana 274 00:26:44,069 --> 00:26:48,789 Pues para eso le ponemos un punto interrogación, o sea, asterisco 275 00:26:48,789 --> 00:26:50,069 ¿Qué le estoy diciendo con eso? 276 00:26:50,069 --> 00:26:53,910 Cualquier carácter repetido cero o más veces 277 00:26:53,910 --> 00:26:56,509 Entonces si yo le doy 278 00:26:56,509 --> 00:26:58,250 Fijaros que ahora me dice 279 00:26:58,250 --> 00:27:02,369 Oye, la letra A empieza por A y termina por C 280 00:27:02,369 --> 00:27:04,849 Empieza por A y termina por C 281 00:27:04,849 --> 00:27:07,829 Y empieza por A y termina por C 282 00:27:07,829 --> 00:27:08,950 Perfecto 283 00:27:08,950 --> 00:27:09,250 ¿Sí? 284 00:27:09,650 --> 00:27:10,829 Entonces quiero que lo veáis 285 00:27:10,829 --> 00:27:13,410 Yo aquí 286 00:27:13,410 --> 00:27:16,589 Empieza por A 287 00:27:16,589 --> 00:27:19,109 Seguido, ¿vale? 288 00:27:19,109 --> 00:27:42,450 Esto empieza por A, seguido de, por ejemplo, este de aquí, de 0, 1 o más, 1C hasta aquí, este es hasta aquí, y este de aquí no tiene nada, porque 0, 1 o más, es 0, 1 o más, ¿sí? 289 00:27:42,450 --> 00:28:02,079 Y seguido en este caso de, espérate que no lo hemos seleccionado, esto es 0, 1 o más, seguido de 1, 1, 1, 11 y así termina la cadena. 290 00:28:02,299 --> 00:28:09,019 Así que seguido de 1, 1, 11, seguido de 1, 1, 11 y seguido de 1, 1, 11 y termina. 291 00:28:09,019 --> 00:28:18,359 Entonces, se utiliza mucho el un punto asterisco para indicar cualquier carácter repetida cero, una o más veces. 292 00:28:19,579 --> 00:28:24,880 ¿De acuerdo? ¿Sí? ¿Sí? Vale. 293 00:28:25,680 --> 00:28:31,460 Voy a utilizar otro ficherito, por ejemplo, no sé si teníamos aquí... 294 00:28:34,240 --> 00:28:45,500 A ver... Vale, voy a utilizar este ficherito de puntuación. 295 00:28:52,839 --> 00:28:54,240 Sí, voy a utilizar este. 296 00:28:54,240 --> 00:28:59,240 este lo teníamos en otro vídeo 297 00:28:59,240 --> 00:29:01,339 ¿qué pasa si yo le quiero decir que me busque 298 00:29:01,339 --> 00:29:02,839 todas las palabras? 299 00:29:03,180 --> 00:29:04,259 voy a editarlo 300 00:29:04,259 --> 00:29:06,619 porque voy a cambiar algunas cositas 301 00:29:06,619 --> 00:29:09,299 y voy a añadir aquí 302 00:29:09,299 --> 00:29:18,710 pongo aquí Carolina está aquí 303 00:29:18,710 --> 00:29:21,049 y le pongo aquí 304 00:29:21,049 --> 00:29:29,680 anatomía 305 00:29:29,680 --> 00:29:31,839 y pongo aquí 306 00:29:31,839 --> 00:29:35,779 o lana 307 00:29:35,779 --> 00:29:47,720 ¿Sí? ¿De acuerdo? Estoy poniendo aquí para hacer ejemplos 308 00:29:47,720 --> 00:29:50,940 Tenemos este ficherito 309 00:29:50,940 --> 00:29:59,299 Si yo le digo que me busque, le digo, oye, quiero que me busques todos los sitios donde aparece Ana 310 00:29:59,299 --> 00:30:02,740 Del ficherito puntuación 311 00:30:02,740 --> 00:30:07,140 Y obviamente me muestra todos los ficheritos donde me aparece Ana 312 00:30:07,140 --> 00:30:19,039 ¿Sí? Pero, ¿y cómo le puedo decir yo que, por ejemplo, empiece, es decir, que sea una palabra que empiece por Ana? 313 00:30:19,400 --> 00:30:27,579 Que sea una palabra que empiece por Ana. ¿Cómo lo hacemos? Pues, en lugar de decirle que me busque Ana, 314 00:30:27,799 --> 00:30:35,779 para decirle que sea una palabra, una palabra que empiece por, lo que vamos a utilizar es el mayor. 315 00:30:35,779 --> 00:30:50,319 Pero como el mayor es un carácter especial, lo que tenemos que hacer es caparlo. Entonces, ¿qué le estoy diciendo con esto? Fijaros que quiero que veáis lo que me ha mostrado. Fijaros que si le digo que me busque Ana, me ha buscado todo esto, ¿sí? 316 00:30:50,319 --> 00:31:11,539 Pero como yo le he dicho aquí que quiero que me busque las palabras que empiezan por Ana, esta sí que es correcta porque empieza por Ana. Esta empieza por Ana, es una palabra, pero esto no es una palabra que empiece por Ana, de forma que esto no me lo muestra, ¿sí? 317 00:31:11,539 --> 00:31:18,259 En la siguiente, que sí que empieza por ana, también me lo muestra, ¿sí? 318 00:31:18,460 --> 00:31:23,940 Entonces, ¿veis que me pone holana? Holana no me la muestra porque no es una palabra que empiece por. 319 00:31:24,900 --> 00:31:29,619 Pero, ¿y qué pasa si yo le digo que en lugar de que empiece la palabra, que termine la palabra? 320 00:31:30,559 --> 00:31:35,119 Pues, para decirle que termine la palabra, le pongo al final de la palabra este. 321 00:31:35,940 --> 00:31:40,119 Entonces, fijaros que ahora me dice, oye, no que empiece, sino que termine. 322 00:31:40,119 --> 00:31:52,119 Pues esta termina por ana, es una palabra que termina por ana, es una palabra que termina por ana y es una palabra que termina por ana. Pero anatomía no termina por ana. ¿Me seguís? 323 00:31:52,119 --> 00:32:10,059 Y si yo quiero buscar una palabra exactamente la palabra ana, yo le puedo decir, oye, quiero que empieces y termines por ana, así que me busca dónde está ana. La palabra ana, que empieza y termina, ¿vale? Es decir, exactamente la palabra ana. ¿De acuerdo? 324 00:32:10,119 --> 00:32:23,849 ¿sí? Y ahora, ¿cómo le puedo decir yo? Me voy otra vez al de antes, alumnos. ¿Cómo le puedo decir yo que me busque las líneas 325 00:32:23,849 --> 00:32:35,930 que contienen el número, por ejemplo, 9 repetido dos veces? Pues yo le puedo decir, oye, quiero que me busques, en este caso, el número 9 326 00:32:35,930 --> 00:32:43,490 y ahora le voy a poner entre llaves el número de veces que quiero que se repita y le digo de 327 00:32:43,490 --> 00:32:55,940 alumnos de forma que un segundo de forma que vale lo tenéis que capar porque son caracteres 328 00:32:55,940 --> 00:33:03,619 especiales en de forma que que le estoy diciendo aquí le estoy diciendo oye quiero que me busques 329 00:33:03,619 --> 00:33:19,099 es el carácter 9 pero quiero que aparezca repetido dos veces así que fijaros 2 2 2 2 2 2 y 2 330 00:33:21,500 --> 00:33:31,960 me seguís yo con esto le puedo decir cuántos cuántas veces quiero que se me repita un número 331 00:33:31,960 --> 00:33:34,539 ¿De acuerdo? ¿Sí? 332 00:33:35,380 --> 00:33:39,779 Vamos a ver ahora las expresiones regulares extendidas 333 00:33:39,779 --> 00:33:42,920 Entonces os muestro la transparencia 334 00:33:42,920 --> 00:33:47,019 Y vamos a ver aquí las expresiones regulares extendidas 335 00:33:47,019 --> 00:33:49,619 Es decir, las expresiones regulares extendidas me ofrecen 336 00:33:49,619 --> 00:33:54,019 Un conjunto más amplio de caracteres especiales 337 00:33:54,019 --> 00:33:55,960 Para que yo pueda jugar mejor con ellos 338 00:33:55,960 --> 00:33:56,279 ¿Vale? 339 00:33:57,420 --> 00:34:01,380 Entonces, antiguamente se utilizaban varios comandos 340 00:34:01,380 --> 00:34:09,239 como el grep o el f grep vale ahora siempre ha existido esta opción pero bueno por eso la muestro 341 00:34:09,239 --> 00:34:17,760 aquí vale ahora se utiliza si queréis utilizar con el grep las expresiones extendidas tenéis 342 00:34:17,760 --> 00:34:24,019 que utilizar el parámetro guión y mayúscula mayúscula vale si yo utilizo el e mayúscula 343 00:34:24,019 --> 00:34:30,559 voy a poder utilizar la interrogación, el más y la barra vertical. 344 00:34:30,900 --> 00:34:32,619 ¿Qué quiere decir la interrogación? 345 00:34:32,780 --> 00:34:37,320 La interrogación quiere decir un carácter, solo uno, ¿vale? 346 00:34:37,800 --> 00:34:40,900 Cero o una vez, es decir, algo opcional. 347 00:34:41,659 --> 00:34:42,940 ¿Qué le estoy diciendo aquí? 348 00:34:43,179 --> 00:34:46,820 Me digo, oye, quiero que me busques lo que contiene color 349 00:34:46,820 --> 00:34:52,940 y luego que puede o que no puede que haya un carácter seguido de una R. 350 00:34:54,019 --> 00:35:00,420 Así que, obviamente, el que me va a aparecer el carácter anterior, ¿eh? 351 00:35:00,519 --> 00:35:06,019 Entonces, de esta manera, le estoy diciendo que la U puede ser opcional o no. 352 00:35:06,280 --> 00:35:07,579 Eso es lo que le estoy diciendo, ¿vale? 353 00:35:08,119 --> 00:35:09,199 Cero o una veces. 354 00:35:09,719 --> 00:35:12,119 El carácter anterior, cero o una más. 355 00:35:12,340 --> 00:35:14,699 Cero o una, no cero más, perdón. 356 00:35:15,019 --> 00:35:15,880 Cero o una vez. 357 00:35:15,960 --> 00:35:19,000 Es decir, es un carácter opcional, que puede estar o que no puede estar. 358 00:35:19,219 --> 00:35:23,800 De forma que colo seguido de cero o más una U. 359 00:35:24,019 --> 00:35:31,219 si puedo poner un más y el más que quiere decir esto es como el asterisco lo que pasa que el 360 00:35:31,219 --> 00:35:36,780 problema por decirlo de alguna manera que tenía el asterisco es que era cero o más pues resulta 361 00:35:36,780 --> 00:35:46,260 que el más quiere decir una o más veces es decir la tecla d vale repetida una o más veces 362 00:35:47,739 --> 00:35:53,400 entonces en lugar de poner como lo poníamos antes con el asterisco de y luego de asterisco pues 363 00:35:53,400 --> 00:35:58,679 esto se soluciona poniendo de y un más diciendo oye tiene que aparecer por lo menos una vez y 364 00:35:58,679 --> 00:36:04,599 luego ya las veces que te dé la gana sí y si estamos utilizando las expresiones extendidas 365 00:36:04,599 --> 00:36:09,760 puede utilizar la barra vertical para indicar uno que quiere decir este ejemplo de aquí le 366 00:36:09,760 --> 00:36:15,920 estoy diciendo quiero que me busque las líneas que contienen gray o grey entonces me va a buscar 367 00:36:15,920 --> 00:36:24,280 todas las líneas donde aparece gray o donde aparece gray. ¿De acuerdo? ¿Sí? Vale. Si estoy utilizando 368 00:36:24,280 --> 00:36:30,980 expresiones regulares, ¿os acordáis que yo podía poner entre corchetes el número de veces que quiero 369 00:36:30,980 --> 00:36:36,619 que se me repita? Pues aquí igual, puedo poner el número de veces que quiero que se repita, pero 370 00:36:36,619 --> 00:36:47,219 además voy a poder poner un n y una coma para decirle que aparezca n o más veces si pongo una 371 00:36:47,219 --> 00:36:54,320 coma y un m quiere decir que como mucho m veces y si quiero decir aquí por ejemplo 5 y 8 que 372 00:36:54,320 --> 00:37:03,980 aparezca entre 5 y a lo máximo 8 veces pues pongo n coma m vale 5,8 puedo especificar un rango de 373 00:37:03,980 --> 00:37:35,039 Vamos a ver los ejemplos. Si nosotros nos vamos aquí a las expresiones regulares extendidas, ponemos grep menos e y por ejemplo le vamos a decir que quiero que me busque, esperaros que para que haga ejemplo, vamos a decirle por ejemplo quiero que me muestres. 374 00:37:35,039 --> 00:38:02,360 Voy a utilizar expresiones extendidas y le voy a decir que quiero que me aparezca, por ejemplo, que sea una A, seguido de una Z, pero de manera opcional, y seguido de una C o una O. 375 00:38:02,360 --> 00:38:09,599 A ver qué nos muestra. 376 00:38:10,320 --> 00:38:16,260 Le digo, a ver, me voy aquí. Tiene que ser una A. Y aquí empieza por una A, ¿verdad? 377 00:38:17,639 --> 00:38:22,760 Seguido opcionalmente de una Z. Opcional quiere decir que no la hay. Seguido de una C, una A. Pues perfecto. 378 00:38:22,880 --> 00:38:29,860 A C es opcional porque la Z no está. Es opcional. Aquí una A seguido de una Z, seguido de una O. Perfecto. 379 00:38:30,500 --> 00:38:36,019 Y aquí una A seguido de nada porque la Z es opcional, seguido de una C. ¿Sí? 380 00:38:36,019 --> 00:38:41,340 Entonces, la interrogación es para decirle que el carácter que hay delante es opcional. 381 00:38:42,500 --> 00:38:55,900 Le puedo decir, oye, quiero que me busques todas las líneas donde aparezca la letra A repetida, o por ejemplo, la letra V repetido una o más veces. 382 00:38:58,340 --> 00:39:03,559 Fijaros que si yo le digo aquí un asterisco, son cero, y me muestra todas. 383 00:39:03,559 --> 00:39:09,300 Si yo le digo que me aparezca al menos una vez, le pongo el más, ¿sí? 384 00:39:10,980 --> 00:39:29,659 Y también le puedo decir que quiero que me busques, digo, oye, quiero que me busques todas las líneas donde aparece SMRC o SMRA. 385 00:39:29,659 --> 00:39:35,619 y esto me falta ponerlo entre llaves 386 00:39:35,619 --> 00:39:43,349 si lo he escrito mal, perdonadme 387 00:39:43,349 --> 00:39:45,590 SMRC 388 00:39:45,590 --> 00:39:49,789 y me muestra las líneas que contienen 389 00:39:49,789 --> 00:39:52,010 o SMRC o SMRA 390 00:39:52,010 --> 00:39:54,190 y entonces para eso tenemos el 391 00:39:54,190 --> 00:39:57,969 el pipeline 392 00:39:57,969 --> 00:39:59,829 la barra vertical 393 00:39:59,829 --> 00:40:04,789 yo con esto puedo jugar y buscar todas las expresiones 394 00:40:04,789 --> 00:40:10,250 regulares que a mí me dé la gana vale estoy oye quiero que me busques por 395 00:40:10,250 --> 00:40:17,989 ejemplo vamos a hacer algún alguno que haya que pensar quiero que me busque 396 00:40:17,989 --> 00:40:32,329 todos los alumnos que por ejemplo cuyo nombre empiece por una cuyo nombre 397 00:40:32,329 --> 00:40:40,230 empiece por lo que no sea una vocal vale vamos a empezar por ahí vamos a 398 00:40:40,230 --> 00:40:53,969 decirle quiero que me busques todo lo que no empieza por una vocal a e i o u y vamos a ver 399 00:40:53,969 --> 00:41:01,369 si uy perdón si no lo he hecho el fichero y vamos a ver si esto no funciona y lo dicho mal que esto 400 00:41:01,369 --> 00:41:08,289 tiene que estar dentro todo lo que no sea todo lo que no sea sí y le quiero decir que empiece 401 00:41:08,289 --> 00:41:19,409 por, pues que empiece por. Así que esto me muestra todo lo que no empieza por una vocal, ¿vale? Este 402 00:41:19,409 --> 00:41:25,769 quiere decir que empieza por y lo que hay dentro del rango, lo que no sea una vocal, ¿sí? Y tenemos 403 00:41:25,769 --> 00:41:44,659 aquí todo lo que no empieza, ¿sí? Ahora, quiero que tenga, por ejemplo, pues yo qué sé, quiero que se 404 00:41:44,659 --> 00:41:58,230 llame, por ejemplo, cuyo nombre empiece por una M o por una A, cuyo nombre empieza por 405 00:41:58,230 --> 00:42:04,349 una M o por una A, ¿sí? Entonces, ¿qué le voy a decir? Digo, vale, estoy aquí, que 406 00:42:04,349 --> 00:42:11,329 empieza por una letra, luego tengo que llegar hasta aquí. ¿Cómo le digo este rango? Digo, 407 00:42:11,329 --> 00:42:23,159 Oye, pues mira, tiene que aparecer, por ejemplo, cualquier carácter repetido cero o una más veces, 408 00:42:23,440 --> 00:42:31,539 seguido por almohadilla, seguido de cero o un más carácter, seguido de almohadilla. 409 00:42:33,699 --> 00:42:37,579 Es decir, el primero sería este, el segundo sería este. 410 00:42:39,280 --> 00:42:41,219 Y estoy ya en el nombre. 411 00:42:41,219 --> 00:43:03,639 y seguido por, hemos dicho que empiece por una A o por una M, y lo probamos, y lo tenemos aquí, dice, oye, empieza por una A, quiero que lo veáis, empieza por una A o empieza por una M, empieza por una A o empieza por una M, ¿sí? 412 00:43:03,639 --> 00:43:09,539 Entonces fijaros que esto se puede empezar a complicar todo lo que nosotros queramos 413 00:43:09,539 --> 00:43:14,139 Y además quiero que sea del grupo dual 3 414 00:43:14,139 --> 00:43:17,880 Pues como le digo que sea del dual 3 415 00:43:17,880 --> 00:43:26,539 Pues le digo que después de esto haya 0 o más caracteres y que termine en dual 3 416 00:43:26,539 --> 00:43:28,119 Y le pongo el dólar 417 00:43:28,119 --> 00:43:32,619 Y aquí tenemos solamente las líneas que a mí me interesan 418 00:43:32,619 --> 00:43:41,139 Que no empiece por una vocal, que el nombre empiece por una A o por una M, Marta y Alain, y que sean del grupo Dual3. 419 00:43:42,139 --> 00:43:45,739 Y yo aquí puedo complicarlo todo lo que me dé la gana. 420 00:43:46,659 --> 00:43:48,340 ¿Sí? ¿De acuerdo? 421 00:43:49,260 --> 00:43:57,300 Vale, pues vamos a ver del comando grep, porque ya sabemos cómo funciona, pero vamos a ver algunas funciones que nos pueden interesar. 422 00:43:57,300 --> 00:44:18,980 Aquí sí que hay una aclaración que no hemos visto el rango. Voy a editar en este caso el nano alumnos y voy a poner aquí lo de hola, hola, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4 y 5. 423 00:44:18,980 --> 00:44:37,500 Ahora, ¿qué pasa si yo le digo que me busque, en este caso, la letra A y le voy a poner aquí repetido tres veces? Pues me pone una, dos y tres. Repetido tres veces. 424 00:44:38,139 --> 00:44:43,159 ¿Qué pasa si yo le digo que aparezca como mucho tres veces? 425 00:44:46,159 --> 00:44:58,760 Aquí fijaros que me pone como mucho porque me ha buscado dos veces, por eso me pone aquí, me pone esto, porque son 1, 2 y 3, y luego empieza 1, 2 y 3, y luego empieza 1, 2 y 3. 426 00:44:59,880 --> 00:45:05,820 ¿Qué pasa si yo le digo que quiero que me busque entre 2 y 3? Pues me busca entre 2 y 3. 427 00:45:05,820 --> 00:45:24,420 O quiero que me busque entre 3 y 5. Pues entre 3 y, como mucho, 5. Pues me busca entre 3 y 5. Que sean más de 3. Pues que sean más de 3. ¿Vale? O sea, 3 o más, perdón. Pues yo le puedo poner un rango en el que quiero que me busque. ¿De acuerdo? 428 00:45:24,420 --> 00:45:26,940 vale, pues lo dicho, vamos a ver 429 00:45:26,940 --> 00:45:28,800 que opciones tenemos del comando 430 00:45:28,800 --> 00:45:30,280 grep, que nos quedan por ver 431 00:45:30,280 --> 00:45:32,780 entonces, aquí 432 00:45:32,780 --> 00:45:34,579 cuando nosotros ponemos, veis que 433 00:45:34,579 --> 00:45:36,559 nos aparece las cosas en color 434 00:45:36,559 --> 00:45:38,619 porque directamente estamos 435 00:45:38,619 --> 00:45:39,440 utilizando 436 00:45:39,440 --> 00:45:42,460 el grep-color 437 00:45:42,460 --> 00:45:45,119 para que los patrones que le encuentre 438 00:45:45,119 --> 00:45:46,760 directamente me los 439 00:45:46,760 --> 00:45:48,460 muestra en color, si 440 00:45:48,460 --> 00:45:50,699 ejemplos que tenemos 441 00:45:50,699 --> 00:45:52,699 aquí, fijaros que si yo 442 00:45:52,699 --> 00:45:53,940 pongo el guion v 443 00:45:53,940 --> 00:46:02,960 el guión v le estoy diciendo quiero que me busques lo que no coincide con el patrón lo que no coincide 444 00:46:02,960 --> 00:46:10,340 con el patrón sí y sin utilizar las expresiones regulares si queréis buscar para que sea todo lo 445 00:46:10,340 --> 00:46:15,760 que sea cat o todo lo que sea doc tenéis que poner la opción guión y esto para decirle quiero que me 446 00:46:15,760 --> 00:46:22,000 busque esto o quiero que me busques esto las líneas que contienen o la e perdón o cat o la 447 00:46:22,000 --> 00:46:25,300 líneas que contienen toc si estamos utilizando las expresiones regulares 448 00:46:25,300 --> 00:46:31,599 extendidas ya sabéis que poner la barra vertical y ponéis cat o dos si si yo me 449 00:46:31,599 --> 00:46:37,239 voy si yo me voy aquí y le digo oye quiero 450 00:46:37,239 --> 00:46:41,860 que me busques por ejemplo os acordáis bueno estoy aquí quiero que me busque 451 00:46:41,860 --> 00:46:46,300 todas las líneas si yo le digo que quiero que me busques todas las que no 452 00:46:46,300 --> 00:46:53,000 le pongo raya v y me busca todas las que no coincidan con ese patrón es lo 453 00:46:53,000 --> 00:46:57,059 contrario de de acuerdo 454 00:46:57,059 --> 00:47:01,619 vale vamos a ver más más opciones que nosotros tenemos de aquí 455 00:47:01,619 --> 00:47:05,719 si no queréis que diferencia entre mayúsculas y minúsculas en la expresión 456 00:47:05,719 --> 00:47:10,880 regular me ponéis un guión y esto ya lo hemos visto para buscar lo contrario y 457 00:47:10,880 --> 00:47:19,760 este es utilísimo me dice oye aplica la búsqueda a los datos vale de forma recursiva a todos los 458 00:47:19,760 --> 00:47:25,579 ficheros y directorios ahora vamos a hacer un ejemplo si me voy a los que me interesan vale 459 00:47:25,579 --> 00:47:30,440 porque esto no lo voy a preguntar porque le puedo decir que me muestre los números después de la 460 00:47:30,440 --> 00:47:35,760 coincidencia las líneas que hay de antes o la línea que después esto ya hemos visto sí que si 461 00:47:35,760 --> 00:47:40,800 Quiero poner un ológico, hemos visto que por defecto me muestra los patrones en color, 462 00:47:41,599 --> 00:47:46,519 pero le puedo decir que me diga cuántas líneas coincide con el patrón, ¿sí? 463 00:47:47,159 --> 00:47:52,239 O que me muestre el número de líneas, o que me muestre el nombre del fichero que contienen. 464 00:47:53,059 --> 00:47:55,559 O que me diga que me busque las palabras. 465 00:47:55,559 --> 00:47:59,340 En lugar de poner el mayor y el menor, como hacíamos antes en la expresión regular, 466 00:47:59,440 --> 00:48:03,400 si yo pongo guión v, v doble, me busca las palabras, ¿sí? 467 00:48:03,400 --> 00:48:24,719 Y terminamos con estos de aquí, os he puesto todas porque lo vais a necesitar para lo de lino sesential, que queréis las líneas enteras, es decir, línea entera que si yo quiero buscar en este caso Fernando Herrero, pues pongo guión x Fernando Herrero y me busca lo que la línea entera que sea Fernando Herrero, ¿sí? 468 00:48:24,719 --> 00:48:50,920 Si yo le digo que solamente me muestre los nombres de los ficheros, guión en E, ¿vale? Le puedo decir que después de encontrar cinco líneas, cinco coincidencias, se pare. O le puedo decir que me muestre solamente las coincidencias o que no me muestre los errores o que me muestre, en este caso, las cabeceras de los nombres o que no me muestre las cabeceras de los nombres de los ficheros, ¿sí? 469 00:48:50,920 --> 00:49:11,860 Y estas tres que son las que se utilizaban antes para utilizar expresiones regulares extendidas, para decirle que me busque en este caso exactamente lo que yo le diga, es decir, no me sirve lo del asterisco, no me sirve, no me funciona ninguno de los caracteres especiales. 470 00:49:11,860 --> 00:49:27,159 Me explico. Ahora vamos a hacer ejemplos. ¿Vale? Porque estos son ejemplos ya para que vosotros lo podáis ver. Imaginaros que yo tengo lo siguiente. Y soy rapidito para que no se me vaya el tiempo que se me está yendo. 471 00:49:27,159 --> 00:49:51,130 Si yo le digo que quiero que me busque y le digo que quiero que me busque lo que empieza por una A, pero si yo no quiero que distinga entre mayúsculas y minúsculas, quiero que veáis que me aparece esta línea. 472 00:49:51,130 --> 00:50:25,679 Si yo quiero que me muestre, por ejemplo, las líneas que contienen, le digo guión E y le digo, yo qué sé, castillo O, le digo que me muestre las líneas que contienen SMRC, ¿vale? 473 00:50:25,679 --> 00:50:29,639 que estaba escribiendo mal, pues en este caso 474 00:50:29,639 --> 00:50:33,360 me va a buscar o lo que contiene en castillo o lo que contiene en SMRC 475 00:50:33,360 --> 00:50:37,239 ¿si? pero hay otras que nos pueden interesar 476 00:50:37,239 --> 00:50:41,659 como es la siguiente, si yo le digo 477 00:50:41,659 --> 00:50:45,519 esto, me muestra las líneas, si le quiero decir que me muestre 478 00:50:45,519 --> 00:50:49,920 cuantas hay, pues le pongo C y me dice que hay 5 líneas 479 00:50:49,920 --> 00:50:53,539 si quiero en lugar de decirle que me diga cuantas hay, que me las 480 00:50:53,539 --> 00:50:57,400 números, pues me dice en qué línea está, también nos puede resultar útil 481 00:50:57,400 --> 00:51:01,440 ¿sí? pero si en lugar de todo esto yo le digo 482 00:51:01,440 --> 00:51:05,179 la L, simplemente me dice el fichero que ha encontrado 483 00:51:05,179 --> 00:51:09,440 ¿por qué esto es interesante? pues para lo siguiente, por ejemplo, imaginaros 484 00:51:09,440 --> 00:51:13,440 que yo le quiero decir que quiero que me busque en el 485 00:51:13,440 --> 00:51:15,780 directorio y escañaveral 486 00:51:15,780 --> 00:51:21,039 en todos los ficheros, de manera recursiva 487 00:51:21,039 --> 00:51:24,719 pues quiero que me busque 488 00:51:24,719 --> 00:51:26,000 por ejemplo 489 00:51:26,000 --> 00:51:32,920 yo que sé 490 00:51:32,920 --> 00:51:34,719 mil novecientos 491 00:51:34,719 --> 00:51:35,840 mil 492 00:51:35,840 --> 00:51:39,719 mil novecientos 493 00:51:39,719 --> 00:51:41,699 ochenta y siete 494 00:51:41,699 --> 00:51:43,039 por ejemplo, ¿vale? 495 00:51:44,039 --> 00:51:46,699 entonces este me va a buscar en todos los ficheros 496 00:51:46,699 --> 00:51:49,760 y fijaros que me está buscando en todos los sitios 497 00:51:49,760 --> 00:51:53,239 y quiero que veas que me dice, mira, el nombre del fichero 498 00:51:53,239 --> 00:51:56,059 y la línea que ha encontrado 499 00:51:56,059 --> 00:51:59,760 el nombre del fichero y la línea que ha encontrado 500 00:51:59,760 --> 00:52:00,619 ¿sí? 501 00:52:01,340 --> 00:52:04,219 si yo le digo que en lugar de que me muestre el contenido 502 00:52:04,219 --> 00:52:07,260 que solamente quiero ver el nombre de los ficheros 503 00:52:07,260 --> 00:52:10,800 pues solamente me dice los ficheros donde lo ha encontrado 504 00:52:10,800 --> 00:52:12,820 entonces hay veces que no puede resultar útil 505 00:52:12,820 --> 00:52:13,679 ¿sí? 506 00:52:15,079 --> 00:52:15,519 vale 507 00:52:15,519 --> 00:52:17,460 también teníamos 508 00:52:17,460 --> 00:52:21,039 el puntuación 509 00:52:21,039 --> 00:52:27,489 si yo le digo que quiero que me busque 510 00:52:27,489 --> 00:52:29,369 y le digo el raya W 511 00:52:29,369 --> 00:52:30,610 y le digo Ana 512 00:52:30,610 --> 00:52:35,119 de puntuación 513 00:52:35,119 --> 00:52:39,920 pues me muestra donde 514 00:52:39,920 --> 00:52:41,300 está la palabra Ana 515 00:52:41,300 --> 00:52:43,139 que esto 516 00:52:43,139 --> 00:52:46,300 y acordaros que si yo pongo 517 00:52:46,300 --> 00:52:56,500 esto 518 00:52:56,500 --> 00:52:57,679 es lo mismo, ¿vale? 519 00:52:58,119 --> 00:53:00,340 porque sepáis que tenéis esas posibilidades 520 00:53:00,340 --> 00:53:01,699 ¿de acuerdo? 521 00:53:01,699 --> 00:53:37,210 Que yo le quiero decir, oye, quiero que me busques, yo que sé, quiero que me busques, por ejemplo, hola, ¿sí? Esto me muestra hola, hola Ana, de puntuación, no, perdón, de alumnos. 522 00:53:37,210 --> 00:53:46,570 alumnos y me muestra eso si yo le pongo aquí un guión x me busca exactamente la 523 00:53:46,570 --> 00:54:00,420 línea que contiene o la sólo sólo eso si yo le digo por ejemplo guión o pues 524 00:54:00,420 --> 00:54:12,400 fijaros que solamente me está mostrando la coincidencia decir todo lo demás no 525 00:54:12,400 --> 00:54:21,440 me lo muestra de acuerdo todo eso me lo quita de acuerdo he puesto un ejemplo más significativo 526 00:54:21,440 --> 00:54:27,099 quiero que miréis estas dos líneas vale porque quiero que vean la importancia de capar no capar 527 00:54:27,099 --> 00:54:33,179 veis que me pone esto es y he puesto entre asterisco asterisco el asterisco final y he 528 00:54:33,179 --> 00:54:40,360 puesto esto es y he puesto asterisco o el final sí qué pasa si yo ejecuto este de aquí le oye 529 00:54:40,360 --> 00:54:44,860 quiero que me busques porque quiero buscar exactamente esto asterisco hola asterisco 530 00:54:46,179 --> 00:54:52,960 si yo le doy fijaros que este primero no me ha puesto bien porque me ha puesto aquí veis que 531 00:54:52,960 --> 00:54:57,639 esto está en negro quiere decir que no está dentro del patrón no me lo está buscando bien y encima el 532 00:54:57,639 --> 00:55:08,699 de abajo también me lo pone y es mentira lo veis qué pasa si yo le digo en lugar de esto lo que 533 00:55:08,699 --> 00:55:15,260 hago es capar para decirle que el asterisco no lo trate como si fuese un 534 00:55:15,260 --> 00:55:21,179 carácter especial y ahora sí que me lo me lo encuentra si otras opciones que 535 00:55:21,179 --> 00:55:26,800 podemos probar si yo pongo el guión efe pues también me lo pone porque me lo 536 00:55:26,800 --> 00:55:32,159 trata tal cual es decir los asterisco ya no nos trata igual vale entendéis esto 537 00:55:32,159 --> 00:55:37,079 porque si yo no pongo eso repito me está considerando el asterisco como 538 00:55:37,079 --> 00:55:41,400 caracteres especiales que son lo que son para hacer las expresiones regulares 539 00:55:41,400 --> 00:55:47,559 de acuerdo vale pues con esto que se me ha ido la hora terminamos la parte de 540 00:55:47,559 --> 00:55:53,980 búsquedas tenemos los de recuerdo el locate el fine y el grep muy útiles de 541 00:55:53,980 --> 00:55:58,480 acuerdo si venga un saludo