|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() Inscription : juin 2003 Messages : 4 176 ![]() |
Bonjour,
j’espère que je suis dans le bon forum..j'ai un problème avec une requête qui doit compter le nombre de (|) dans un fichier pour chaque ligne.. et s'il en manque, compeleter jusqu'à 47. voilà la commande: Code :
cat source_file | awk -F"|" 'NF < 47 {var=""; for (i=0;i<(47-NF);i++) var=var"|";echo $0var; print $0var;} NF == 47 {print $0;}' > dest_file je ne sais pas comment débugger ..pour bien voir où est le problème .. Merci |
|
|
10
|
|
|
#2 | ||
![]() ![]() Idriss NeumannConsultant en SSII et étudiant au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 1 978 ![]() |
Bonsoir.
Quelque chose dans ce style conviendrait ? Code :
![]() Cordialement, Idriss |
||
|
10
|
|
|
#3 | ||||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 070 ![]() |
Bonjour,
Code script.awk :
Code :
|
||||
|
|
20
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 534 ![]() |
utiliser cat .... | awk .....
c'est pas nécessaire pour ce genre de manipulation Code :
awk .......... fichiersAtraiter > fichierResultant |
|
|
10
|
|
|
#5 |
![]() ![]() Inscription : juin 2003 Messages : 4 176 ![]() |
Bonjour,
J'ai essayé le script de N_bah, je n'arrive pas à l’exécuter erreur : |
|
|
01
|
|
|
#6 |
![]() ![]() Idriss NeumannConsultant en SSII et étudiant au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 1 978 ![]() |
Pouvez-vous nous retourner le résultat de la commande ci-dessous, dans le répertoire ou vous avez essayé d’exécuter le script ?
Cordialement, Idriss |
|
10
|
|
|
#7 |
![]() ![]() Inscription : juin 2003 Messages : 4 176 ![]() |
vide ..
|
|
|
10
|
|
|
#8 |
![]() ![]() Idriss NeumannConsultant en SSII et étudiant au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 1 978 ![]() |
Tu n'es surement pas dans le bon répertoire alors.
Il faut faire ./mon_script quand on est dans le répertoire ou se situe le script. Cordialement, Idriss |
|
10
|
|
|
#9 | ||
![]() ![]() Inscription : juin 2003 Messages : 4 176 ![]() |
Code :
|
||
|
|
10
|
|
|
#10 |
![]() ![]() Idriss NeumannConsultant en SSII et étudiant au CNAM Paris (ingénieur SI) Inscription : février 2009 Messages : 1 978 ![]() |
Et ls -l pour voir les droits ?
S'il n'y a pas les droits d'exécution, il faut faire un : Code :
chmod +x script.sh # ou script.awk pour celui de N_Bah |
|
10
|
|
|
#11 |
![]() ![]() Inscription : juin 2003 Messages : 4 176 ![]() |
-rwxrwxrwx .
peu être j'ai une ancienne version de awk, le readLine fonctionnait pas. |
|
|
10
|
|
|
#12 |
![]() ![]() Inscription : juin 2003 Messages : 4 176 ![]() |
re..bonjour,
Au fait, je reformule ma question autrement, je voudrais supprimer du fichier résultat toutes les colonnes et séparateurs si ça dépasse 47, ma première commande complète le fichier s'il le nombre de colonnes est inférieur à 47. |
|
|
10
|
|
|
#13 | ||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 070 ![]() |
on continue :
Code :
|
||
|
|
20
|
|
|
#14 |
![]() ![]() Inscription : juin 2003 Messages : 4 176 ![]() |
Pourquoi le test
ça me donne l'erreur: Event not found Je le f ais directement en ligne de commande sans passer par un script: le fichier source contient 35 lignes..avec un NF 48. Code :
cat source | awk -F"|" 'NF>47 { var=$0; for (i=1;i<=47;i++) var=var"|"$i ; print var; var=""; }' > tmp |
|
|
00
|
|
|
#15 |
![]() ![]() Inscription : juin 2003 Messages : 4 176 ![]() |
si j'ai bien compris..
$0 ça affiche toute la ligne. . donc je commence par $1.. Code :
cat source | awk -F"|" 'NF<47 {var=""; for (i=0;i<47-NF;i++) var=var"|"; print $0var;} NF>47 { var=$1; for (i=2;i<=47;i++) var=var"|"$i ; print var; } NF == 47 {print $0;}' > dest ça l'air de fonctionner .. Je teste encore toutes les possibilités. Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com