Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Portada » Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 3 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Nuevo
Forista Nuevo

Registrado: Sab Oct 27, 2018 3:19 am
Mensajes: 2

Nota Publicado: Sab Oct 27, 2018 3:34 am 
Arriba  
Hola, necesitaría una ayudita para trastear con sed o grep, tal vez awk, para buscar un texto contenido dentro de un fichero de texto.
Son muchas lineas,y el texto es variable, pero siempre esta encerrado entre unas etiquetas concretas.
Lo que quiero es el texto de en medio.

Por ejemplo:
Suponiendo que es un html, querria sacar todo lo que hay encerrado en la etiqueta <style="...........;">
EL problema es que puede empezar en al columna 3, en la 5 en la 20, no se sabe. Puede tener una longitud de 10, 40, 50 caracteres, tampoco se sabe. Solo sé que quiero lo que está contenido dentro de esa etiqueta.

Haba pensado ejecutarlo mas o menos buscando <style =" y cortando a la derecha, y lo que quede, cortar a la izquierda del primer ;">
Creo que bastaría, pero no domino mucho los parametros de estos comandos

Tengo que poder ejecutarlo en bash

Gracias

 Perfil  

Desconectado
Forista Legendario
Forista Legendario
Avatar de Usuario

Registrado: Dom Oct 10, 2004 7:00 am
Mensajes: 1799

Nota Publicado: Dom Oct 28, 2018 1:57 am 
Arriba  
Código:
sed -n 's:.*<style>\(.*\)</style>.*:\1:p'


También hay una herramienta llamada xmlstarlet; probablemente te resulte más práctica para extraer contenido html.

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo

Registrado: Sab Oct 27, 2018 3:19 am
Mensajes: 2

Nota Publicado: Dom Oct 28, 2018 2:51 pm 
Arriba  
Gracias, pero creo que no me he explicado bien. Tengo que usar grep, sed o awk.

El fichero puede ser similar a esto:
<div: style="Helvet;"><posicion: "Dtor" style="2222.11;"/>@Superv <etiqueta>....</etiqueta>
<div: style="abcded;"><empleado: "id=Pepe" style="2222.11;"/>@alfabet <marca>Tipo1</marca><etiqueta>....</etiqueta>
<div: style="x_1223;"><empleado: "Id=Laura Maria " style="2222.11;"/>@pe1ar# <marca>Otra MAs</marca><etiqueta>....</etiqueta>

O sea, mas o menos es como una html, que tiene cabeceras, body y pie. En todas puede haber etiqueta <div>, por lo que no me sirve como delimitador. Tampoco me sirve buscar (Id:) porque puede estar en otros puntos del fichero. El atributo style no me indica mucho, porque puede haber varios de esos atributos en la misma linea y en muchas otras lineas.

Pero si me sirve el delimitador (<empleado ) para saber que quiero excavar en esa linea.. Puede ser que la etiqueta ocupe el segundo tag, pero tambien podria ser el 3º, el 4º; no creo que pueda encolumnar a una posicion concreta de la linea. Ademas, de esa linea quiero otros campos, que pueden estar seguidos o no, ocupar 4 8, ó 20 caracteres.

Lo que necesito es el id de la persona, con el nombre entre comillado, el comentario con @, y lo que va en la etiqueta marca:

De forma que la idea que llevo es:
. Hago grep de la etiqueta <empleado Con eso extraigo las lineas que tienen lo que busco, vuelco la linea en una variable por comodidad para las siguientes busquedas.
. Ahora, trabajando contra la variable que contiene la linea, vuelco en 3 variables lo que necesito, lo hago para no hacer un grep con multiples intrucciones, y que no sé si unas excluirian a las otras, pero que sería muy dificil de leer:
- hago grep de <empleado id: " hasta que encuentro otras comillas ", el resultado lo vuelco en una variable X1 (trabajador)
- hago grep de nuevo buscando @ (o buscando >@) hasta la siguiente "<", y cojo el texto @xxxxxx en otra variable X2, su cuenta
- hago grep de nuevo y busco el texto contenido entre <marca> y </marca> y lo vuelco en la variable X3 (linea de produccion)

Y me quedaria:
X1 X2 X3
Pepe @alfabet Tipo1
Laura Maria @pe1ar MAs

No sé si habría un método mas eficaz, pero no puedo contar columnas, porque no sé cuantas columnas hay. Tampoco sé el orden exacto de los campos que busco. Lo único que sé es que tengo que buscar varios textos y extraerlos para luego listarlos


Gracias

 Perfil  
Mostrar mensajes previos:  Ordenar por  
 [ 3 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


 Temas relacionados   Autor   Respuestas   Vistas   Último mensaje 
Error en creacion de fichero de texto, aunque lo crea correctamente.

en Sistema

joseacevedo

0

561

Mié Abr 29, 2015 8:23 pm

joseacevedo Ver último mensaje

para pasar un fichero .bat de Windows a script de Linux

en Programación

yosalveta

7

2507

Mar Oct 05, 2010 3:03 am

maiku Ver último mensaje

¿Linux minimalista en modo texto? (consola)

en Instalación de distribuciones

pitukaleya

8

2206

Dom Ene 17, 2016 6:03 pm

PabliNet Ver último mensaje

Linux diskette booteable en linea d texto como Win98diskBoot

en Software

Firewall27

4

712

Mié Dic 09, 2009 6:51 am

Firewall27 Ver último mensaje

Fichero "autorun.inf" en USB, totalmente invisible desde Linux y Windows

en Hardware

TursonX

10

2055

Lun Feb 08, 2016 7:24 am

TursonX Ver último mensaje



¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC + 1 hora [ DST ]
Traducción al español por Huan Manwë
phpBB SEO