|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Bonjour a tous.
J'ai un fichier texte avec des enregistrements ..1000 pour être précis. Dans chaque enregistrement j'ai un champ =866 avec des infos. La commande nawk ci-dessous formate le champ =866, le transforme en =952 et change des données à l’intérieur. Le awk marche bien, mais un des champs doit avoir une valeur incrémentée de 1 pour chaque enregistrement dans le fichier : Exemple du fichier (je colle pas tout car il est long) Code :
Code :
=952 \\$aBNCS-CH\\$bBNCS-CH\\$h1989\\$oBNCS-CH0000001\\$pBNCS-CH0000001\\$yJNL Code :
nawk -F"[\$a ]" '{if ($0~/^=866/) {print "=952",$3"$a"$5$3"$b"$5"\\\\$h"$6"\\\\$o"$5"0000001\\\$p"$5"0000001\\\\$yJNL" } else {print $0}}' revistas1.txt >luis.txt Donc le $o et $p pour l'enregistrement suivant serait: Code :
J'ai pensé faire une boucle for dans le awk, mais je n'y arrive pas. Quelqu'un connait l'astuce? Ça serait quelque chose comme: D'avance merci |
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
Bonjour,
une idée : Code :
printf '%s\n' {a..l} | awk 'increment = sprintf("%.6d\n",(++increment)) {print "increment = "increment}' |
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Bonjour
cette commande que vous proposez, je l’exécute après le nawk? La commande nawk je dois l’exécuter obligé car ça me formate mon fichier texte. A quel moment j’exécute votre commande? Je dois passer le nom de fichier quelque part ? D'avance merci |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
c'est seulement pour te montrer comment incrémenter une variable qui doit respecter un certain format.
Il faut l'adapter, et le replacer dans ton code awk. |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Uffff
je sais pas si je vais reussir a faire ça tout seul donc ça serait: Code :
nawk -F"[\$a ]" '{if ($0~/^=866/) {print "=952",$3"$a"$5$3"$b"$5"\\\\$h"$6"\\\\| awk 'increment = sprintf("%.6d\n",(++increment)) {print "increment = "increment}'\\$yJNL" } else {print $0}}' revistas1.txt >luis.txt |
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
nan, plutôt :
Code :
nawk -F"[\$a ]" '{if ($0~/^=866/) { increment = sprintf("%.6d",(++increment)); print "=952",$3"$a"$5$3"$b"$5"\\\\$h"$6"\\\\increment\\$yJNL" } else {print $0}}' revistas1.txt >lu is.txt |
|
|
00
|
|
|
#7 | ||
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Bonsoir
alors là je pige pas, regarde ce que ça donne: Code: Code :
nawk -F"[\$a ]" '{if ($0~/^=866/) { increment = sprintf("%.6d",(++increment)); print "=952",$3"$a"$5$3"$b"$5"\\\\$h"$6"\\\\increment\\$yJNL" } else {print $0}}' revistas1.txt >luis.txt Code :
Excuse mais je ne suis pas admin sys, c'est comme du chinois ces codes. EN fait ce que je voudrais c'est que à 2 endroits différents de la chaine, apparaisse un code + son incrément Le code est une suite de 5 zéros et coller à ça l’incrément Donc ça ferait: 000001 000002 ... 000001000 La ligne =952 devrait etre comme ceci: Code :
=952 \\$aBNCS-CH\\$bBNCS-CH\\$h1989\\$o000001\\$p000001\\$yJNL Code :
=952 \\$aBNCS-CH\\$bBNCS-CH\\$h1989\\$o000002\\$p000002\\$yJNL T'en penses quoi? c'est faisable? D'avance merci |
||
|
|
00
|
|
|
#8 | ||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
ok, donc pas de formatage (c'est moins drôle) :
Code :
|
||
|
|
00
|
|
|
#9 | ||
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
A ouais? jejeje tu veux du formatage?
Bon regarde, ça donne ceci: Code :
|
||
|
|
00
|
|
|
#10 | ||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
c'est un " qui a disparu lors de la copie.
Code :
|
||
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Bonjour,
Hooo cool cette fois c'est la bonne. Merci mil fois c'est cool. Si t'as besoin d'aide avec postgres orace ou mysql, avise. Ciao |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com