The UNIX and Linux Forums  


Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de scripts de shell y
.
google unix.com



Programación de scripts de shell y Plantear preguntas sobre KSH, CSH, SH, BASH, PERL, PHP, SED, AWK y otros scripts de shell y lenguajes de script de shell aquí.

Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
campos de búsqueda en un archivo Pablo_beezo Programación de scripts de shell y 4 10-20-2008 11:52 AM
Cadena de búsqueda de archivos dentro y Retorno Nombre del archivo bggibson UNIX for Dummies Preguntas y Respuestas 4 09-25-2008 06:45 AM
Sistema de búsqueda de dos campos JISHA Programación de scripts de shell y 3 04-23-2008 06:16 AM
buscar y reemplazar los diferentes campos tungaw2004 UNIX for Dummies Preguntas y Respuestas 3 03-29-2007 04:16 AM
Script de shell para volver todos los ID de archivo basado en la distribución Identificación de búsqueda kumbhatalok UNIX for Dummies Preguntas y Respuestas 1 10-06-2006 01:53 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 11-17-2008
da2357 da2357 is offline
Usuario Registrado
  
 

Fecha: noviembre 2008
Publicaciones: 3
Búsqueda de archivo y volver 3 campos

Tengo que ser capaz de buscar un piso de archivo (valores separados por comas) para un valor específico y, a continuación, devolver los siguientes 2 campos en variables. Aquí hay una muestra de archivo:

SN, Cuenta, Ipaddress
W120394YF, adam, 10.0.20.2
W394830PR, betty, 10.0.20.3
W847582TD, Charlie, 10.0.20.4
W749509AY, donna, 10.0.20.5

Ya tengo BASH código que extrae el número de serie del ordenador y lo almacena para SERIALNUM. Quiero buscar en el archivo para que SERIALNUM y regresar el próximo 2 campos en la ACCT y IPADD. Sugerencias?
  #2 (Enlace permanente)  
Old 11-17-2008
in2nix4life's Avatar
in2nix4life in2nix4life is offline
Usuario Registrado
  
 

Fecha: octubre 2007
Ubicación: East Coast
Puestos: 58
Uso de awk como este punto usted puede ayudar en la dirección correcta:

serialnum \u003d `awk-F", " '/ W394830PR / (print $ 1)' fichero`
cuenta \u003d `awk-F", " '/ W394830PR / (print $ 2)' archivo`
ipAddress \u003d `awk-F", " '/ W394830PR / (print $ 3)' fichero`
  #3 (Enlace permanente)  
Old 11-18-2008
Christoph Spohr Christoph Spohr is offline
Usuario Registrado
  
 

Fecha: Sep 2008
Puestos: 205
Hola,

Yo sugeriría a la primera lectura en el archivo entero en tres variedad, uno para la serie, uno para el usuario y otro para el ipadd.


Código:
declare -a SERIAL ACCT IPADD 
let count=0 
while IFS=, read a b c 
do 
    SERIAL[$count]=$a; ACCT[$count]=$b; IPADD[$count]=$c; ((count++)) 
done < file

Esto establece el separador de campo al interior "," y lee los tres campos separados por comas en las tres variables que son empujados a la declarada matrices.

Ahora puede buscar en este arreglo como este:


Código:
let i=0 
while [[ $i -lt ${#SERIAL[@]} ]] 
do 
  [[ ${SERIAL[${i}]} = W120* ]] && printf "%s %s\n" ${ACCT[${i}]} ${IPADD[${i}]} 
  ((i++)) 
done

Este bucles a través de la matriz. $ (# SERIE [@]) le da el número de entradas de un array. Si un determinado SERIE se encuentra, los datos correspondientes se emiten.

Chris HTH
  #4 (Enlace permanente)  
Old 11-18-2008
da2357 da2357 is offline
Usuario Registrado
  
 

Fecha: noviembre 2008
Publicaciones: 3
Cita:
Publicado originalmente por in2nix4life View Post
Uso de awk como este punto usted puede ayudar en la dirección correcta:

serialnum \u003d `awk-F", " '/ W394830PR / (print $ 1)' fichero`
cuenta \u003d `awk-F", " '/ W394830PR / (print $ 2)' archivo`
ipAddress \u003d `awk-F", " '/ W394830PR / (print $ 3)' fichero`
Muy bueno (y gracias), este me consiguió el 99% allí. He aquí un fragmento de lo que tengo, con su idea:


Código:
#!/bin/bash
USERLIST="/Users/johndoe/.bin/xBackup_users"
SRCHFOR="W8735UL8Z5V"
#
USERNAME=`awk -F "," '/W8735UL8Z5V/{print $2}' $USERLIST`
PASSWORD=`awk -F "," '/W8735UL8Z5V/{print $3}' $USERLIST`
RSYNCIP=`awk -F "," '/W8735UL8Z5V/{print $4}' $USERLIST`
#
clear
echo
echo Your account name is $USERNAME
echo Your password is $PASSWORD
echo Your IP address is $RSYNCIP
echo
exit

Para terminar esto, me gustaría utilizar la variable SRCHFOR en el comando awk y he probado varias maneras, pero no está seguro de cómo hacerlo funcionar. (Ya he separado el código que extrae el número de serie de la máquina.)

Cualquier ideas finales?
  #5 (Enlace permanente)  
Old 11-18-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Fecha: diciembre 2007
Ubicación: Casa de 17-veces campeón mundial de Boston Celtics
Puestos: 1.311
Wink

Echa un vistazo a la sugerencia anterior (de yongitz):
Cita:
awk-F "," pat-v \u003d $ SERIALNUM '$ 0 ~ pat (print $ 2, $ 3)' your_flat_file.txt
Usted debe especificar una variable para su uso en awk, al igual que hizo anteriormente. La v-dice la definición de una variable, y el pat es asignado, y es igual a $ SERIALNUM. Usted tendría que hacer lo mismo para su SRCHFOR variable. Entonces, se puede usar patrones (o cualquier otro nombre de variable que se asigna) en awk que hacer su comparación.
  #6 (Enlace permanente)  
Old 11-18-2008
da2357 da2357 is offline
Usuario Registrado
  
 

Fecha: noviembre 2008
Publicaciones: 3
Cita:
Publicado originalmente por da2357
Cualquier ideas finales?
Eureka, lo encontré!


Código:
#!/bin/bash
USERLIST="/Users/johndoe/.bin/xBackup_users"
SRCHFOR="W8735UL8Z5V"
#
USERNAME=`awk -F "," '/^'"$SRCHFOR"'/ {print $2}' $USERLIST`
PASSWORD=`awk -F "," '/^'"$SRCHFOR"'/ {print $3}' $USERLIST`
RSYNCIP=`awk -F "," '/^'"$SRCHFOR"'/ {print $4}' $USERLIST`
#
clear
echo
echo Your account name is $USERNAME
echo Your password is $PASSWORD
echo Your IP address is $RSYNCIP
echo
exit

Gracias a todos por sus ideas.
  #7 (Enlace permanente)  
Old 11-18-2008
yongitz yongitz is offline
Usuario Registrado
  
 

Fecha: abril 2008
Ubicación: Filipinas
Puestos: 68

Código:
awk -F"," -v pat=$SERIALNUM '$0 ~ pat {print $2,$3}' your_flat_file.txt

Esto supone que sólo tienes un número de serie almacenado en SERIALNUM variable.
Closed Thread

Marcadores

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Encendido




Todas las horas son GMT -4. La hora es 10:07 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0