The UNIX and Linux Forums  


Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
les champs de recherche dans un fichier Pablo_beezo De programmation et de script Shell 4 10-20-2008 11:52 AM
Recherche de cordes et de retour au sein du fichier Nom du fichier bggibson UNIX pour les nuls Questions et réponses 4 09-25-2008 06:45 AM
Comment faire une recherche de deux domaines JISHA De programmation et de script Shell 3 04-23-2008 06:16 AM
rechercher et remplacer les différents domaines tungaw2004 UNIX pour les nuls Questions et réponses 3 03-29-2007 04:16 AM
Shell script pour renvoyer tous les ID de fichier basé sur la distribution ID de recherche kumbhatalok UNIX pour les nuls Questions et réponses 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 Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 11-17-2008
da2357 da2357 is offline
Registered User
  
 

Date d'inscription: novembre 2008
Messages: 3
Recherche de fichiers plats et de retour 3 champs

Je dois être capable de rechercher un fichier plat (comma-separated values) pour une valeur spécifique, puis retourner le texte suivant 2 champs dans les variables. Voici un exemple de fichier plat:

SN, compte 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'ai déjà BASH code qui extrait le numéro de série de l'ordinateur et les stocke pour SERIALNUM. Je veux faire des recherches sur le fichier pour que le retour SERIALNUM et après 2 champs de l'ACCT et IPADD. Suggestions?
  #2 (permalink)  
Old 11-17-2008
in2nix4life's Avatar
in2nix4life in2nix4life is offline
Registered User
  
 

Join Date: Oct 2007
Lieu: East Coast
Posts: 58
Utiliser awk mai comme ce point, vous aider dans la bonne direction:

serialnum \u003d `awk-F", " '/ W394830PR / (print $ 1)' file»
compte \u003d `awk-F", " '/ W394830PR / (print $ 2)' file»
ipaddress \u003d `awk-F", " '/ W394830PR / (print $ 3)' fichier`
  #3 (permalink)  
Old 11-18-2008
Christoph Spohr Christoph Spohr is offline
Registered User
  
 

Join Date: Sep 2008
Messages: 205
Salut,

Je dirais d'abord lire le fichier en trois tableaux, un pour la série, l'un pour l'utilisateur et un pour le ipadd.

Code:
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
Cela définit le séparateur de champ à l'intérieur », et lit la virgule trois domaines distincts dans les trois variables qui sont poussés dans la déclaration de tableaux.

Maintenant vous pouvez rechercher ce tableau comme ceci:

Code:
let i=0 
while [[ $i -lt ${#SERIAL[@]} ]] 
do 
  [[ ${SERIAL[${i}]} = W120* ]] && printf "%s %s\n" ${ACCT[${i}]} ${IPADD[${i}]} 
  ((i++)) 
done
Cette boucle à travers le tableau. $ (# SERIE [@]) donne le nombre d'entrées d'un tableau. Si une certaine SERIE est trouvé, les données correspondantes sont de sortie.

HTH Chris
  #4 (permalink)  
Old 11-18-2008
da2357 da2357 is offline
Registered User
  
 

Date d'inscription: novembre 2008
Messages: 3
Citation:
Posté par in2nix4life View Post
Utiliser awk mai comme ce point, vous aider dans la bonne direction:

serialnum \u003d `awk-F", " '/ W394830PR / (print $ 1)' file»
compte \u003d `awk-F", " '/ W394830PR / (print $ 2)' file»
ipaddress \u003d `awk-F", " '/ W394830PR / (print $ 3)' fichier`
Grande (et merci), il m'a fait 99% là. Voici un extrait de ce que j'ai, à l'aide de votre idée:

Code:
#!/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
Pour finir, je préfère utiliser la variable SRCHFOR dans la commande awk, et j'ai essayé plusieurs façons, mais ne savez pas comment faire pour qu'il fonctionne. (J'ai déjà séparé des extraits de code que le numéro de série de la machine.)

Toute final idées?
  #5 (permalink)  
Old 11-18-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Join Date: Dec 2007
Lieu: Accueil de 17-champion du monde Boston Celtics
Messages: 1311
Wink

Jetez un coup d'oeil aux précédentes suggestion (de yongitz):
Citation:
awk-F ","-v SERIALNUM $ pat \u003d '$ 0 ~ pat (print $ 2, $ 3)' your_flat_file.txt
Vous avez besoin de spécifier une variable pour l'utilisation de awk, faire comme ci-dessus. La v-dit de fixer une variable, et l'une est attribuée pat, et il est égal à $ SERIALNUM. Vous devrez faire de même pour votre SRCHFOR variable. Ensuite, vous pouvez utiliser pat (ou tout autre nom de variable que vous définissez) dans awk pour faire votre correspondant.
  #6 (permalink)  
Old 11-18-2008
da2357 da2357 is offline
Registered User
  
 

Date d'inscription: novembre 2008
Messages: 3
Citation:
Posté par da2357
Toute final idées?
Eureka, j'ai trouvé!

Code:
#!/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
Merci à tous pour vos idées.
  #7 (permalink)  
Old 11-18-2008
yongitz yongitz is offline
Registered User
  
 

Date d'inscription: avril 2008
Lieu: Philippines
Posts: 68
Code:
awk -F"," -v pat=$SERIALNUM '$0 ~ pat {print $2,$3}' your_flat_file.txt
Cela suppose que vous possédez un numéro de série stockées dans SERIALNUM variable.
Closed Thread

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 04:26 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0