Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/08/2011, 12h23   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 38
Points : 13
Points : 13
Par défaut Pb de blanc avec un awk

Bonjour à tous,

j'ai un petit souci avec mon script : J'ai une clef qui est sur 25 caractères et qui peut contenir des blanc. Je veux chercher cette clef dans un fichier pour récupérer une information.
Le fichier est de la forme :
clefsur25car;inforarecuperer

J'utilise cette commande :

infoARecuperer=$( echo `awk -f fichierawkperso -v n=$clefsur25car ficheirderecherche`)

Mon fichier awk perso :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
BEGIN {        
  y = 0;       
  FS=";"       
  }            
{              
  if( n == $1) 
  {            
    a = $0     
    y = 1      
  }            
}              
END {          
  if ( y == 0 )
  {            
    a = ""     
               
  }            
  printf a     
}
Le problème est que si ma clef contiens des blancs, mon awk ne trouve pas, alors que dans le fichier il y a bien les blancs et dans la clef aussi.
Si ma clef ne contiens pas de blanc, il trouve sans problème.

Auriez-vous une idée?
Agent_Nivek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 14h46   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 535
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 535
Points : 7 748
Points : 7 748
Code :
1
2
3
4
5
6
[fpu@ln ~/tmp] a=$(sed "/$clef/s/.*;//" toto)
[fpu@ln ~/tmp] echo $a
inf rare uperer
[fpu@ln ~/tmp] cat toto
A4R4 54;inf rare uperer
[fpu@ln ~/tmp]
avec sed c'est quand même plus simple ... (pour moi)
Code :
a_recuperer=$(sed "/$la_clef_recherchee/s/.*;//" fichier)
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 14h57   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 38
Points : 13
Points : 13
Bonjour et merci pour ta réponse.

Je viens de tester, mais ça me renvoie toutes les lignes.
ça ne me renvoie pas que celle ou la clef match.

En fait j'ai oublié de préciser que mon fichier contiens plusieurs lignes.
Agent_Nivek est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/08/2011, 16h06   #4
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Citation:
Envoyé par Agent_Nivek Voir le message
Je viens de tester, mais ça me renvoie toutes les lignes.
ça ne me renvoie pas que celle ou la clef match.
Code :
sed -n "/$la_clef_recherchee/s/.*;//p" fichier
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/08/2011, 16h23   #5
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 535
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 535
Points : 7 748
Points : 7 748
Citation:
Envoyé par Agent_Nivek Voir le message
Bonjour et merci pour ta réponse.

Je viens de tester, mais ça me renvoie toutes les lignes.
ça ne me renvoie pas que celle ou la clef match.

En fait j'ai oublié de préciser que mon fichier contiens plusieurs lignes.
suffit de rajouter comme indiqué par zip31 si tu as plusieurs lignes avec la même clef...
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 16h26   #6
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 38
Points : 13
Points : 13
ça marche!!!!

Merci à vous!!!
Agent_Nivek est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/08/2011, 08h26   #7
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 966
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 966
Points : 1 369
Points : 1 369
Sinon, avec awk, tu n'étais pas loin:

Code :
infoARecuperer=$(awk -f fichierawkperso -v n="$clefsur25car" fichierderecherche)
Ton script awk est un peu trop complexe, tu peux tout faire en une ligne.

Code :
infoARecuperer=$(awk -F ";" -v n="$clefsur25car" '$1==n {print}' fichierderecherche)
Grep serait plus simple aussi:

Code :
infoARecuperer=$(grep "^$clefsur25car;" fichierderecherche)
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h57.


 
 
 
 
Partenaires

Hébergement Web