The UNIX and Linux Forums  
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.

Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
pesquisa campos dentro de um arquivo Pablo_beezo Programação Shell Script e 4 10-20-2008 10:52
Procurar por seqüência no arquivo e Retornar Nome do Arquivo bggibson UNIX para Dummies Perguntas & Respostas 4 09-25-2008 05:45
Como a procura de dois campos jisha Programação Shell Script e 3 04-23-2008 05:16
pesquisar e substituir diferentes campos tungaw2004 UNIX para Dummies Perguntas & Respostas 3 03-29-2007 03:16
Shell script para retornar todos os ID's do arquivo baseado na distribuição ID pesquisa kumbhatalok UNIX para Dummies Perguntas & Respostas 1 10-06-2006 12:53

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 11-17-2008
da2357 da2357 is offline
Usuário
  
 

Join Date: Nov 2008
Posts: 3
Pesquisar arquivo plano e retorno 3 campos

Preciso ser capaz de procurar um arquivo plano (valores separados por vírgula) para um valor específico e, em seguida, retornar os seguintes campos em 2 variáveis. Aqui está uma amostra plana arquivo:

SN, Conta, 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

Já tenho BASH código que extrai o número de série do computador e guarda-a SERIALNUM. Quero pesquisar o arquivo para que SERIALNUM e retornar os seguintes campos em 2 ACCT e IPADD. Sugestões?
  #2 (permalink)  
Old 11-17-2008
in2nix4life's Avatar
in2nix4life in2nix4life is offline
Usuário
  
 

Join Date: Oct 2007
Localização: Costa Leste
Lugares: 58
Usando o awk como este ponto, você pode ajudar na direcção certa:

serialnum \u003d `awk-F", " '/ W394830PR / (print $ 1)' arquivo`
conta \u003d `awk-F", " '/ W394830PR / (print $ 2)'` arquivo
ipaddress \u003d `awk-F", " '/ W394830PR / (print $ 3)' arquivo`
  #3 (permalink)  
Old 11-18-2008
Christoph Spohr Christoph Spohr is offline
Usuário
  
 

Join Date: Sep 2008
Lugares: 205
Oi,

Gostaria de sugerir para a primeira leitura em todo o ficheiro em três array, uma para a série, uma para o usuário e um para o 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
Isso define o campo de separação interna para "", e lê a vírgula três campos separados em três variáveis que são empurradas para a arrays declarados.

Agora você pode pesquisar este array 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
Isto vale a lacetes array. $ (# SÉRIE [@]) dá-lhe o número de entradas de uma matriz. Se um determinado SÉRIE encontra-se, os dados correspondentes são de saída.

HTH Chris
  #4 (permalink)  
Old 11-18-2008
da2357 da2357 is offline
Usuário
  
 

Join Date: Nov 2008
Posts: 3
Citação:
Originally Posted by in2nix4life View Post
Usando o awk como este ponto, você pode ajudar na direcção certa:

serialnum \u003d `awk-F", " '/ W394830PR / (print $ 1)' arquivo`
conta \u003d `awk-F", " '/ W394830PR / (print $ 2)'` arquivo
ipaddress \u003d `awk-F", " '/ W394830PR / (print $ 3)' arquivo`
Grande (e agradece), este me pegou 99% lá. Aqui está um trecho do que eu, usando a sua ideia:

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 este, eu prefiro utilizar a variável SRCHFOR no comando awk e eu tentei várias maneiras, mas não tem certeza sobre como obtê-lo para o trabalho. (Eu já código separado que extrai o número de série da máquina.)

Qualquer final ideias?
  #5 (permalink)  
Old 11-18-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
Modérateur
  
 

Join Data: dezembro 2007
Localização: Home, de 17 de tempo de campeão mundial de Boston Celtics
Posts: 1.311
Wink

Dê uma olhada anterior sugestão (de yongitz):
Citação:
awk-F ","-v \u003d $ pat SERIALNUM '$ 0 ~ pat (print $ 2, $ 3)' your_flat_file.txt
Você precisa especificar uma variável para uso em awk, como feito anteriormente. O diz-v para definir uma variável, e é atribuído a um padrão, e é igual a US $ SERIALNUM. Você precisaria fazer o mesmo para o seu SRCHFOR variável. Então, você poderia usar pat (ou qualquer outro nome que você atribuir variável) dentro awk para fazer o seu alinhamento.
  #6 (permalink)  
Old 11-18-2008
da2357 da2357 is offline
Usuário
  
 

Join Date: Nov 2008
Posts: 3
Citação:
Originally Posted by da2357
Qualquer final ideias?
Eureka, encontrei-o!

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
Obrigado a todos por suas idéias.
  #7 (permalink)  
Old 11-18-2008
yongitz yongitz is offline
Usuário
  
 

Join Date: Apr 2008
Localização: Portugal
Lugares: 68
Código:
awk -F"," -v pat=$SERIALNUM '$0 ~ pat {print $2,$3}' your_flat_file.txt
Isto pressupõe que você só tem um número armazenado na variável SERIALNUM.
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 06:22.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0