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)
Le champs =866 devient ça une fois formaté :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 =LDR 00795nas 2200193 i 4500 =005 20100728125529.0 =008 920520c1989\\\\-usmr\\\\\\\\\0\\\\\eng\\ =022 0\$a1040-2446 =041 0\$aeng =210 1\$aAcad Med =245 00$aAcademic Medicine / $cAssociation of American Medical Colleges. =260 \\$aPhiladelphia : $bAssociation American Medical Colleges, $c1989. =300 \\$c24 cm. =310 \\$aMensual =530 \\$aDisponible en versi{dbldotb}n electr{dbldotb}nica desde 2000. =650 \4$aMedicina. =780 00$aEs continuaci{dbldotb}n de. $t"Journal of Medical Education" $xISSN 0022-2577 =856 \\$uhttp://ovidsp.ovid.com/ovidweb.cgi?T=JS&MODE=ovid&NEWS=n&PAGE=toc&D=ovft&AN=00001888-000000000-00000 $zAcceso al texto completo =866 \\$aBNCS-CH 1989 (1990)1991(1992)1993-96(1997)1998-2001(2002-2005)2006-2008.
La commande est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part =952 \\$aBNCS-CH\\$bBNCS-CH\\$h1989\\$oBNCS-CH0000001\\$pBNCS-CH0000001\\$yJNL
Le problème c'est que je voudrais ces 2 champs là incrémentés de 1 pour chaque enregistrement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part $o"$5"0000001\\\$p"$5"0000001
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $o"$5"0000002\\\$p"$5"0000002 ... dernier $o"$5"0000001000\\\$p"$5"0000001000
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part $o"$5"000000"$i\\\$p"$5"000000"$i
Partager