Elegir un pedazo de texto de un documento
Elegir un pedazo de texto de un documento
Hola. Estaba buscando una forma de filtrar el contenido de un fichero de texto para imprimir solamente un párrafo determinado. Estuve probando con awk, sed, pero no lo conseguí.
Hay un documento de texto que contiene muchos párrafos separados por un salto de línea y cada párrafo tiene su fecha de edición y hora, por ejemplo:
Fecha: 05-10-2019 10:20:00
Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla
Fecha: 06-10-2019 10:14:10
Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla
Fecha: 06-10-2019 12:20:10
Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla
Fecha: 07-10-2019 09:10:18
Bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla
Me gustaría imprimir solamente el párrafo correspondiente a, por ejemplo, "Fecha: 06-10-2019 12:20:10"
-A 4 indica las lineas posteriores al párrafo buscado ( en tu caso la fecha ) ( -B 3 mostraría los párrafos anteriores )
Edito: se deslizo una doble doble comilla al inicio ,esta mal es "06-10-2019"
No recuerdo como hacerlo, pero además de lo que te han comentado, con cut creo que era, podías indicar el "separador" de campos, con lo que si es un parrafo entero y solo hay salto de línea al final del mismo, se podría configurar dicho salto de línea como separador de campo, con lo que tomaría solo hasta ese salto de línea.
No hay bar que por bien no venga....
Otra opcion
Emmm con sed también va
Edito :alguna explicación teórica de lo que se hace ( tuve que buscar,,claro !)
-n no imprimir(no mostrar ) hasta que se requiera
'/el párrafo comienza con /
/,/ continuar hasta que ,,
/^$/ acá finaliza lo que se mostrara ,en este caso ^ inicia con $ finaliza con , como entre ambos símbolos no hay algo ,por lo tanto una linea vacía
/p imprimir (mostrar por salida standard ,o sea la pantalla )
Edito2: El te va a ser muy util
Ah, genial, gracias.
Antes de enviar este tema al foro estuve probando, pero me traicionó un espacio doble que hay en la cadena de búsqueda entre la fecha y la hora en el texto del ejemplo.
$ awk '/Fecha: 06-10-2019 12:20:10/,/^$/' fichero #Así no funciona
$ awk '/Fecha: 06-10-2019 12:20:10/,/^$/' fichero #Así sí funciona bien.
$ sed -n '/Fecha: 06-10-2019 12:20:10/,/^$/p' t.txt # Así no funciona.
$ sed -n '/Fecha: 06-10-2019 12:20:10/,/^$/p' t.txt # Así sí funciona.
Miré muchas veces, pero no me había dado cuenta de la diferencia entre lo que yo escribía y lo que estaba escrito en el fichero.
Muy interesante el enlace, muchas gracias.
En esos casos ,probas cortando y pegando la palabra/frase objetivo de tu búsqueda(en emulador de terminal ,selecionas con el raton , y luego pegas con el botón central )