je sais que l'increment en colonne (pour une ligne donnée) est:
pour l'increment en ligne c'est quoi??Code:
1
2
3
4 for (i=1; i<iMax;i++) if($i= "toto"){ action... }
Merci d'avance....
Version imprimable
je sais que l'increment en colonne (pour une ligne donnée) est:
pour l'increment en ligne c'est quoi??Code:
1
2
3
4 for (i=1; i<iMax;i++) if($i= "toto"){ action... }
Merci d'avance....
Si tu veux dire passer à la ligne suivante sans exécuter le code awk qui suit, c'est next.
Pourrais-tu donner un échantillon du fichier entrée ainsi que la sortie désirée?
Merci infiniment pour l'aide...
mon code est le suivant:
en fait dans mon fichier d'origine, j'ai n fois le mot PWHTABCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 ($1=="PWHTAB") { if(nomTab != " "){ ind = 8 } else{ ind=7} for(itrTHP = 1; itrTHP <= NbElemP; itrTHP++){ for(itrWcut = 1; itrWcut <= NbElemW; itrWcut++){ for(itrGOR = 1; itrGOR <= NbElemGO; itrGOR++){ printf(itrTHP);printf(" ");printf(itrWcut);printf(" ");printf(itrGOR);printf(" ");printf("1");printf(" "); multPDC=0 nbItrMax= NbElemQ/4 eps = nbItrMax - int(nbItrMax) while(multPDC<int(nbItrMax)){ resPDC = 4 * multPDC if (multPDC == 0){ printf($(ind+resPDC)); printf(" ");printf($(ind+resPDC+1)); printf(" ");printf($(ind+resPDC+2)); printf(" ");printf($(ind+resPDC+3));print(" ") } else{ printf(" ");printf($(ind+resPDC)); printf(" ");printf($(ind+resPDC+1)); printf(" ");printf($(ind+resPDC+2)); printf(" ");printf($(ind+resPDC+3));print(" ") } multPDC=multPDC+1 } if (eps>0.001){ y = 3 nbEps = 4*eps if(int(nbItrMax)==0){ y = 0 resPDC=0 ind=ind-1 } for(m=1;m<=nbEps;m++){ printf($(ind+resPDC+y+m)); printf(" ") } } print("/") } } } }
le fichier crée lorsque j'execute contient n fois le meme tableau (suite au boucle for) et ceci de chaque PWHTAB trouvé!
c'est à dire finalement j'ai l'operation qui est aussi repetée n fois!!
avez vous une idée?
pieces jointes envoyées du fichier d'origine et converti. le bout du programme est dans la reponse precedante...
le fichier format wordpad est l'original. le 2nd (doc) est le converti
Essaye de mettre quelques lignes typiques du fichier source et ce que tu veux en faire. Parce qu'en regardant ton fichier modifié, je ne vois pas trop la logique de ton truc ni le problème que tu as.
en fait le tout est dans la fiche "saut de ligne dans AWK"... dsl pr le doublon!
dans le fichier d'origine j'ai des ligne qui commence par PWHTAB
mon but et de stocké les valeur de cette ligne dans un nouveau fichier sous forme d'un tableau precedé à chaque fois de l'indice du tableau: c a d
1 1 1 1
1 1 2 1
1 1 3 1
1 2 1 1
etc...
Un début de piste à mettre en forme selon tes contraintes:
Basé sur un fichier test_liq.Ath contenant des lignes comme:Code:
1
2
3
4
5
6
7
8
9
10
11 #!/bin/bash awk ' /^PWHTAB/{ ligne=sprintf("%s %s %s %s\t",$3,$5,$6,$7) for(i=8;i<=27;i++){ sep=!((i-7)%4)?"\n\t":" " ligne=ligne $i sep } print ligne }' test_liq.Ath
Sortie produite par mon exemple:Code:
1
2
3
4
5 PWHTAB tab1 1 1:20 1 1 1 3721.75 3108.77 3187.86 3324.38 3484.28 3648.63 3809.34 3963.86 4114.07 4260.89 4404.93 4547.2 4689.41 4832.46 4977.19 5124.33 5274.54 5427.73 5584.91 5745.94 < GO-WHTAB=400 W-WHTAB=0 P-WHTAB=214.696 PWHTAB tab1 1 1:20 1 2 1 3541.77 2059.91 2273.47 2545.64 2836.53 3117.33 3389.56 3642.2 3881.17 4101.63 4313.62 4519.13 4722.08 4924.28 5127.44 5329.67 5534.5 5741.51 5952.63 6167.84 < GO-WHTAB=820 W-WHTAB=0 P-WHTAB=214.696 PWHTAB tab1 1 1:20 1 3 1 3405.6 1398.56 1764.03 2142.25 2526.39 2909.88 3282.38 3644.75 3996.62 4341.02 4682.81 5020.6 5358.93 5687.89 6016.68 6349.74 6677.6 7018.06 7367.49 7726.6 < GO-WHTAB=2000 W-WHTAB=0 P-WHTAB=214.696 PWHTAB tab1 1 1:20 2 1 1 4882.17 3809.3 3821.69 3909.74 4020.41 4142.93 4269.44 4397.43 4526.48 4656.45 4786.89 4919.01 5054 5190.98 5331.17 5475.38 5622.88 5774.54 5930.5 6090.93 < GO-WHTAB=400 W-WHTAB=0.4 P-WHTAB=214.696 PWHTAB tab1 1 1:20 2 2 1 4769.46 2853.57 2953.02 3143.96 3369.35 3598.92 3821.6 4037.83 4238.3 4433.89 4625.48 4810 4997.09 5185.29 5374.5 5563.59 5755.37 5950.05 6148 6349.69 < GO-WHTAB=820 W-WHTAB=0.4 P-WHTAB=214.696
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 1 1 1 1 3721.75 3108.77 3187.86 3324.38 3484.28 3648.63 3809.34 3963.86 4114.07 4260.89 4404.93 4547.2 4689.41 4832.46 4977.19 5124.33 5274.54 5427.73 5584.91 5745.94 1 1 2 1 3541.77 2059.91 2273.47 2545.64 2836.53 3117.33 3389.56 3642.2 3881.17 4101.63 4313.62 4519.13 4722.08 4924.28 5127.44 5329.67 5534.5 5741.51 5952.63 6167.84 1 1 3 1 3405.6 1398.56 1764.03 2142.25 2526.39 2909.88 3282.38 3644.75 3996.62 4341.02 4682.81 5020.6 5358.93 5687.89 6016.68 6349.74 6677.6 7018.06 7367.49 7726.6
vous etes trop trop fort! mille merci
probleme resolu!