Elegir un pedazo de texto de un documento

7 envíos / 0 nuevos
Último envío
#1 Dom, 06/10/2019 - 13:45
rayo
Imagen de rayo
Desconectado/a
colaborador
se unió: 21/02/16

Elegir un pedazo de texto de un documento

Estado: 
[SOLUCIONADO]

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"

 

 

Dom, 06/10/2019 - 14:43
caliban
Imagen de caliban
Conectado
moderador
se unió: 14/01/16
 cat <archivo> |grep -A 4 ""06-10-2019"

-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" 

Dom, 06/10/2019 - 14:46
Panko
Imagen de Panko
Conectado
moderador
se unió: 18/02/16

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....
Dom, 06/10/2019 - 14:57
caliban
Imagen de caliban
Conectado
moderador
se unió: 14/01/16

Otra opcion 

awk '/06-10-2019 /,/^$/' /ruta/archivo

 

Dom, 06/10/2019 - 15:02
caliban
Imagen de caliban
Conectado
moderador
se unió: 14/01/16

Emmm con sed también  va 

sed -n '/06-10-2019 /,/^$/p' /ruta/archivo

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 siguiente enlace te va a ser muy util 

 

Lun, 07/10/2019 - 13:06
rayo
Imagen de rayo
Desconectado/a
colaborador
se unió: 21/02/16

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.

Lun, 07/10/2019 - 13:31
caliban
Imagen de caliban
Conectado
moderador
se unió: 14/01/16

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 )