Foros del Web » Administración de Sistemas » Unix / Linux »

Filtrado de campos en Linux

Estas en el tema de Filtrado de campos en Linux en el foro de Unix / Linux en Foros del Web. Hola a todos,estoy realizando un trabajo para la universidad y me gustaria filtrar unos datos para mostrarlos en mi pagina web a traves de php ...
  #1 (permalink)  
Antiguo 05/02/2015, 09:25
 
Fecha de Ingreso: febrero-2015
Mensajes: 56
Antigüedad: 9 años, 10 meses
Puntos: 1
Filtrado de campos en Linux

Hola a todos,estoy realizando un trabajo para la universidad y me gustaria filtrar unos datos para mostrarlos en mi pagina web a traves de php pero no consigo sacar los resultados que deseo
El documento de texto tiene el siguiente esquema:

======== Projects ========
1) -----------
name: LHC@home 1.0
master URL: http://lhcathomeclassic.cern.ch/sixtrack/
user_name: Ecoraee
team_name:
resource share: 100.000000
user_total_credit: 380.192832
2) -----------
name: ibercivis
master URL: http://registro.ibercivis.es/
user_name: ecoraee
team_name:
resource share: 100.000000
user_total_credit: 339.670245
3) -----------
name: Radioactive@Home
master URL: http://radioactiveathome.org/boinc/
user_name: ecoraee
team_name:
resource share: 100.000000
user_total_credit: 0.000000

Y yo lo que quiero es mediante grep o awk sacar la informacion de cada "x)" y mostrar la información de sus campos.
Ojala alguien me pueda ayudar.
Muchas gracias y un saludo
  #2 (permalink)  
Antiguo 06/02/2015, 07:40
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Filtrado de campos en Linux

Conociendo la estructura del archivo, es bastante sencillo hacerlo con awk. Es cuestión de usar un bloque para cada dato interesante:

Código BASH:
Ver original
  1. awk '/^[0-9]\)/ { print n, mu, un, tn, rs, utc } # imprime los datos cuando encuentra una cabecera
  2.    $1~/name/ { n = $2 }
  3.    # haces lo mismo para el resto de los campos, guardando cada valor en una variable
  4.    END { print n, mu, un, tn, rs, utc }' # imprime los datos al final
  #3 (permalink)  
Antiguo 06/02/2015, 08:47
 
Fecha de Ingreso: febrero-2015
Mensajes: 56
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: Filtrado de campos en Linux

Muchas gracias por tu respuesta,me ha servido de grana ayuda :)

Estuve realizando pruebas para mostrar los datos del primer campo pero no consigo que me salga el nombre no se porque

awk '/^[0-1]\)/ { print na, mu, un, tn, rs, utc }
$1~/name/ { na = $2 }
$2~/URL/ { mu = $3 }
$1~/user_name/ { un = $2 }
$1~/team_name/ { tn = $2 }
$1~/resource/ { rs = $3 }
$1~/user_total_credit/ { utc = $2 }
END { print "Nombre: " na,"Direccion URL: " mu,"Nombre Usuario: " un,
"Nombre Equipo: " tn,"Recursos: " rs,"Credito total usado: " utc }' prueba.txt


El resultado que me sale es:
Nombre: Direccion URL: http://boinc.fzk.de/poem/ Nombre Usuario: Ecoraee Nombre Equipo: Recursos: 100.000000 Credito total usado: 0.000000

También estuve intentando mostrar un campo por linea pero no hay manera.
  #4 (permalink)  
Antiguo 06/02/2015, 12:12
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Filtrado de campos en Linux

Seguramente sea porque /name/ coincidirá con las líneas que contentan /team_name/ y /user_name/. Una forma rápida de solucionar esto es cambiar /name/ por /^name/, lo cual indica que debe coincidir solamente si el campo comienza con "name"

Para mostrar un campo línea por línea, basta incluir "\n" en los lugares donde quieras el salto de línea.


Saludos.
  #5 (permalink)  
Antiguo 09/02/2015, 18:02
 
Fecha de Ingreso: febrero-2015
Mensajes: 56
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: Filtrado de campos en Linux

Pues me ha funcionado todo a la perfección,me has ayudado un montón :)
Aunque no consigo sacar un dato por linea y he probado de mil maneras y nada de nada no se porque la verdad
  #6 (permalink)  
Antiguo 10/02/2015, 10:02
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Filtrado de campos en Linux

Pues algún error debes tener por ahí. Si mostraras tu código sería más fácil identificarlo.
  #7 (permalink)  
Antiguo 12/02/2015, 13:51
 
Fecha de Ingreso: febrero-2015
Mensajes: 56
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: Filtrado de campos en Linux

Pues he probado de todo la verdad y nada de nada:
he puesto print "\n" o "\n" en todos los sitios que hay ***

Código BASH:
Ver original
  1. awk '/^[0-1]\)/ { print na,*** mu, un, tn, rs, utc }
  2. $1~/^name/ { na = $0 }
  3. $2~/URL/ { mu = $3 }
  4. $1~/user_name/ { un = $2 }
  5. $1~/team_name/ { tn = $2 }
  6. $1~/resource/ { rs = $3 }
  7. $1~/user_total_credit/ { utc = $2 }
  8. END {print "Nombre: ***" na,***"Direccion URL: " mu,"Nombre Usuario: " un,
  9. "Nombre Equipo: " tn,"Recursos: " rs,"Credito total usado: " utc }' boinccmd_getState.txt

decir que la salida me sale así,todo seguido:
Nombre: name: LHC@home 1.0 Direccion URL: http://lhcathomeclassic.cern.ch/sixtrack/ Nombre Usuario: Ecoraee Nombre Equipo: Recursos: 100.000000 Credito total usado: 380.192832


Este resultado lo saco a un boton,y me gustaría sacar cada una de las divisiones de los distintos proyectos a un boton pero no se muy bien como hacerlo,ya que la salida a php la saco con:

<?php system('./programa.sh');
?>

Como podría hacer para que la información de proyecto me salga a un botón diferente?

Muchas gracias y un saludo

Última edición por AlvaroG; 13/02/2015 a las 06:56 Razón: coloreado de código
  #8 (permalink)  
Antiguo 13/02/2015, 07:00
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Filtrado de campos en Linux

Espera un segundo porque estamos empezando a mezclar cosas. Para que el script genere saltos de línea, lo único que tenés que hacer es agregar un "\n" luego de cada variable en la línea de print:
Código BASH:
Ver original
  1. print "Nombre: " na, "\nDireccion URL: " mu,"\nNombre Usuario: " un,
  2. "\nNombre Equipo: " tn,"\nRecursos: " rs,"\nCredito total usado: " utc
Ahora, si lo que querés es mostrar esos datos en una página web con PHP, ¿no sería más sencillo hacer el procesamiento con PHP?
  #9 (permalink)  
Antiguo 13/02/2015, 07:11
 
Fecha de Ingreso: febrero-2015
Mensajes: 56
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: Filtrado de campos en Linux

Es que sólo sabia hacerlo de esta manera
  #10 (permalink)  
Antiguo 18/02/2015, 07:12
 
Fecha de Ingreso: febrero-2015
Mensajes: 56
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: Filtrado de campos en Linux

Podría alguien indicarme como hacerlo de la manera que menciona AlvaroG?

Un saludo y muchas gracias

Etiquetas: awk, linux
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:05.