Aide sur un traitement fichier sur Aix

Fermé
leloup - 18 nov. 2010 à 16:45
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 22 nov. 2010 à 09:39
Bonjour, à tous,

J'ai un fichier qui est monté comme cela :
MAGASIN :101  R'ception des Op'rations au 
                     bobon.                     tv                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  0             0            0            0            0            0
Compteur 1       0             0            0            0            0            0
Compteur 2       0             0            0            0            0            0
Encaissement     0             0
Decaissement     0             0


MAGASIN :102  R'ception des Op'rations au 171110
                     bobon.                     tv                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  0             0            1            1            0            0
Compteur 1       0             0            420902       510902       0            0
Compteur 2       0             0            7            7            0            0
Encaissement     0             0
Decaissement     0             0
etc.....


Je voudrais pouvoir faire un test sur les champs et si ceux ci ne sont pas égaux envoyer le bloc dans un autre fichier.

En gros, la je recupererais dans un autre fichier :
MAGASIN :102  R'ception des Op'rations au 171110
                     bobon.                     tv                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  0             0            1            1            0            0
Compteur 1       0             0            420902       510902       0            0
Compteur 2       0             0            7            7            0            0
Encaissement     0             0
Decaissement     0             0


Est ce possible et surtout comment s'y prendre ?

Merci d'avance pour votre aide.

Cordialement à tous
Leloup



A voir également:

19 réponses

bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 472
Modifié par bob031 le 18/11/2010 à 20:07
Bonjour,

Mais oui c'est possible !

Sous Unix, tout est possible .... ou presque ^^

la commande diff devrait peut-être t'aider.

pour plus de précisions :

man diff


un penguin sur la banquise !
0
Bonjour et merci de ton intérêt,

Je sais bien que sous unix/linux tout est possible ou presque d'ou notre choix lol

Par contre, diff permet de comparer 2 fichiers mais non un seul fichier me semble t'il.

Merci encore pour votre aide.

Cordialement à tous
Leloup
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
19 nov. 2010 à 07:53
Salut,

Il nous faudrait davantage d'explications...

Si j'ai bien compris tu veux comparer chaque bloc commençant par "MAGASIN :xxx" (et se finissant par une ligne vide comme séparateur de bloc ?) au 1er bloc et envoyer le bloc dans un fichier si les champs ne concordent pas ?

Un exemple plus concret serait de mise afin de lever toute ambiguïté ;-\
0
C'est tout à fait cela.

Ben l'exemple est dans mon premier message.

J'ai effectivement plusieurs bloc commencant par magXXX et se terminant par une ligne vide.

A l'interieur du bloc, j'ai plusieurs champs (par deux) et si ils ne concordent pas, je souhaiterais que le boc soit redirigé vers un autre fichier.

Le fichier serait donc comme cela :
MAGASIN :101  R'ception des Op'rations au 
                     bobon.                     Truc                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  0             0            0            0            0            0
Compteur 1       0             0            0            0            0            0
Compteur 2       0             0            0            0            0            0
Encaissement     0             0
Decaissement     0             0


MAGASIN :102  R'ception des Op'rations au 171110
                     bobon.                     Truc                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  0             0            1            1            0            0
Compteur 1       0             0            420902       420902       0            0
Compteur 2       0             0            7            7            0            0
Encaissement     0             0
Decaissement     0             0

MAGASIN :103  R'ception des Op'rations au 171110
                     bobon.                     Truc                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  531           531          89           89           0            0
Compteur 1       836.54        836.5        6902898      6302262      0            0
Compteur 2       2134992       2134992      1583.97      1520.17      0            0
Encaissement     2038.43       2038.43
Decaissement     2038.43       2038.43

MAGASIN :104  R'ception des Op'rations au 171110
                     bobon.                     Truc                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  10            10           145          145          0            0
Compteur 1       294           294          9248565      9248565      0            0
Compteur 2       9047          9047         1727.74      1727.74      0            0
Encaissement     0             0
Decaissement     0             0

MAGASIN :239  R'ception des Op'rations au 171110
                     bobon.                     Truc                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  250           250          23           23           0            0
Compteur 1       168.06        168.04       3663671      3363292      0            0
Compteur 2       3688580       3688580      393.32       373.24       0            0
Encaissement     1234.7        1234.7
Decaissement     1234.7        1234.7



Et je voudrais récuperer :
MAGASIN :103  R'ception des Op'rations au 171110
                     bobon.                     Truc                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  531           531          89           89           0            0
Compteur 1       836.54        836.5        6902898      6302262      0            0
Compteur 2       2134992       2134992      1583.97      1520.17      0            0
Encaissement     2038.43       2038.43
Decaissement     2038.43       2038.43

MAGASIN :239  R'ception des Op'rations au 171110
                     bobon.                     Truc                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  250           250          23           23           0            0
Compteur 1       168.06        168.04       3663671      3363292      0            0
Compteur 2       3688580       3688580      393.32       373.24       0            0
Encaissement     1234.7        1234.7
Decaissement     1234.7        1234.7


Merci pour votre aide

Cordialement
Leloup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
19 nov. 2010 à 16:19
$ cat fich
MAGASIN :101  R'ception des Op'rations au 
                     bobon.                     Truc                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  0             0            0            0            0            0   
Compteur 1       0             0            0            0            0            0   
Compteur 2       0             0            0            0            0            0   
Encaissement     0             0                                                       
Decaissement     0             0                                                       


MAGASIN :102  R'ception des Op'rations au 171110
                     bobon.                     Truc                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  0             0            1            1            0            0   
Compteur 1       0             0            420902       420902       0            0   
Compteur 2       0             0            7            7            0            0   
Encaissement     0             0                                                       
Decaissement     0             0                                                       

MAGASIN :103  R'ception des Op'rations au 171110
                     bobon.                     Truc                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  531           531          89           89           0            0   
Compteur 1       836.54        836.5        6902898      6302262      0            0   
Compteur 2       2134992       2134992      1583.97      1520.17      0            0   
Encaissement     2038.43       2038.43                                                 
Decaissement     2038.43       2038.43                                                 

MAGASIN :104  R'ception des Op'rations au 171110
                     bobon.                     Truc                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  10            10           145          145          0            0   
Compteur 1       294           294          9248565      9248565      0            0   
Compteur 2       9047          9047         1727.74      1727.74      0            0   
Encaissement     0             0                                                       
Decaissement     0             0                                                       

MAGASIN :239  R'ception des Op'rations au 171110
                     bobon.                     Truc                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  250           250          23           23           0            0
Compteur 1       168.06        168.04       3663671      3363292      0            0
Compteur 2       3688580       3688580      393.32       373.24       0            0
Encaissement     1234.7        1234.7
Decaissement     1234.7        1234.7

$ awk  'BEGIN { RS="\n\n+"; FS="\n" }{ split($5,tb," "); if(tb[5] != tb[6]) {printf $0"\n\n"} }' fich
MAGASIN :103  R'ception des Op'rations au 171110
                     bobon.                     Truc                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  531           531          89           89           0            0
Compteur 1       836.54        836.5        6902898      6302262      0            0
Compteur 2       2134992       2134992      1583.97      1520.17      0            0
Encaissement     2038.43       2038.43
Decaissement     2038.43       2038.43

MAGASIN :239  R'ception des Op'rations au 171110
                     bobon.                     Truc                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  250           250          23           23           0            0
Compteur 1       168.06        168.04       3663671      3363292      0            0
Compteur 2       3688580       3688580      393.32       373.24       0            0
Encaissement     1234.7        1234.7
Decaissement     1234.7        1234.7

$

;-))
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
Modifié par Char Snipeur le 19/11/2010 à 16:30
doublon : https://forums.commentcamarche.net/forum/affich-19883896-traitement-fichier-sous-ksh#p19887045 (à sa décharge, le problème tiens autant de la programmation que de Unix, la preuve réponse dans les deux)

awk, je l'oublie toujours celle là.
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
19 nov. 2010 à 16:58
A part que pour "grep" il avait déjà eu une réponse, et que les doublons ne sont pas tolérés principalement pour ne pas s'égarer et ne pas répéter 50 fois la même chose ;-((
0
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 472
19 nov. 2010 à 19:50
Ouais ! Bon, ça va ! Je pensais qu'il s'agissait de 2 fichiers différents !


Par contre, diff permet de comparer 2 fichiers mais non un seul fichier me semble t'il.

exact !

^^
0
Merci encore à tous pour votre aide.

Désolé mais la commande
awk  'BEGIN { RS="\n\n+"; FS="\n" }{ split($5,tb," "); if(tb[5] != tb[6]) {printf $0"\n\n"} }' fich


ne me renvoi rien.

Cordialement
Leloup
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
19 nov. 2010 à 23:18
Change les "\n" par des "\r" ;-\
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
19 nov. 2010 à 23:35
En fait modifie comme suit :

awk  'BEGIN { RS="\r\n\r\n+"; FS="\r\n" }{ split($5,tb," "); if(tb[5] != tb[6]) {printf $0"\n\n"} }'
0
Bonjour,

Désolé, mais
awk  'BEGIN { RS="\r\n\r\n+"; FS="\r\n" }{ split($5,tb," "); if(tb[5] != tb[6]) {printf $0"\n\n"} }' fich
ne me renvoie rien non plus.

Merci encore pour vos efforts et votre aide

Cordialement
Leloup
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
20 nov. 2010 à 09:07
Même topo que la dernière fois alors, merci de mettre le fichier sur "Cijoint" ;-\
0
Merci Zipe31,

Le lien est : http://www.cijoint.fr/cjlink.php?file=cj201011/cijoANWETP.txt

Cordialement
Leloup
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
20 nov. 2010 à 10:50
Ben chez moi ça marche sans problème ;-\

$ grep -o -c 'MAGASIN' cijoANWETP.txt
75

$ awk  'BEGIN { RS="\r\n\r\n+"; FS="\r\n" }{ split($5,tb," "); if(tb[5] != tb[6]) {printf $0"\n\n"} }' cijoANWETP.txt | grep -o -c 'MAGASIN'
44

$ awk  'BEGIN { RS="\r\n\r\n+"; FS="\r\n" }{ split($5,tb," "); if(tb[5] != tb[6]) {printf $0"\n\n"} }' cijoANWETP.txt | egrep -o 'MAGASIN :[^ ]*'
MAGASIN :102
MAGASIN :104
MAGASIN :108
MAGASIN :109
MAGASIN :110
MAGASIN :111
MAGASIN :113
MAGASIN :114
MAGASIN :115
MAGASIN :117
MAGASIN :121
MAGASIN :124
MAGASIN :129
MAGASIN :132
MAGASIN :133
MAGASIN :134
MAGASIN :137
MAGASIN :138
MAGASIN :140
MAGASIN :144
MAGASIN :145
MAGASIN :149
MAGASIN :150
MAGASIN :151
MAGASIN :152
MAGASIN :159
MAGASIN :167
MAGASIN :169
MAGASIN :173
MAGASIN :179
MAGASIN :184
MAGASIN :197
MAGASIN :239
MAGASIN :261
MAGASIN :275
MAGASIN :336
MAGASIN :4GA
MAGASIN :4GD
MAGASIN :4GH
MAGASIN :4GI
MAGASIN :4GK
MAGASIN :4GM
MAGASIN :4GN
MAGASIN :4GS

C'est les bons ?

Essayes avec "gawk" ou "nawk" ;-\
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
20 nov. 2010 à 11:05
Oups avec les nouvelles données, le champ à récupérer a changé ($6 et non plus $5) ;-((

awk  'BEGIN { RS="\r\n\r\n+"; FS="\r\n" }{ split($6,tb," "); if(tb[5] != tb[6]) {printf $0"\n\n"} }' cijoANWETP.txt

MAGASIN :239  R?ception des Op?rations au 171110
                     Appro.                     Cereales                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  250           250          23           23           0            0
Compteur 1       168.06        168.04       3663671      3363292      0            0
Compteur 2       3688580       3688580      393.32       373.24       0            0
Encaissement     1234.7        1234.7
Decaissement     1234.7        1234.7


MAGASIN :275  R?ception des Op?rations au 171110
                     Appro.                     Cereales                     Heures
                Emis          Recus        Emis         Recus        Emis         Recus
Enregistrements  531           531          89           89           0            0
Compteur 1       836.54        836.5        6902898      6302262      0            0
Compteur 2       2134992       2134992      1583.97      1520.17      0            0
Encaissement     2038.43       2038.43
Decaissement     2038.43       2038.43

;-))
0
Désolé,

la commande fonctionne a merveille sous linux, mais s'entête à ne rien renvoyé sous mon aix.

Je suis perdu

Cordialement
Leloup
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
20 nov. 2010 à 11:46
T'as essayé avec gawk ou nawk ?
0
Non, ils ne sont pas installé sur mon Aix

Amicalement
leloup
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
20 nov. 2010 à 13:02
Ben là je ne peux plus rien pour toi ;-((

C'est un fichier créé sous AIX ou importé d'un système Windows ?
As-tu essayé de convertir le fichier au format Unix (dos2unix ou avec "sed") ?
0
C'est bien un fichier créé sous aix.

Ce n'est a rien y comprendre

Amicalement
leloup
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
20 nov. 2010 à 13:22
Que renvoie la commande :

file fichier
0
Ca renvoi :
data or international language text


Amicalement
leloup
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
20 nov. 2010 à 17:38
C'est pas très causant les système AIX ;-((

Et la conversion de fichiers t'as essayé ou pas ?
0
Non car Dos2unix n'est pas installé sous l'aix

C'est quand meme incroyable que ca fonctionne a merveille sous linux et que ca ne renvoi strictement rien sous aix.

Amicalement
leloup
0
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 472
20 nov. 2010 à 18:23
Bonjour,

J'essaierai de voir au boulot sur une AIX pourquoi cela ne le fait pas !
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
20 nov. 2010 à 18:33
Non car Dos2unix n'est pas installé sous l'aix
Et en convertissant avec "sed" (Conversion retours chariots DOS (CRLF) / UNIX (LF)) ?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
20 nov. 2010 à 18:35
Salut Bobby ;-))

J'essaierai de voir au boulot sur une AIX pourquoi cela ne le fait pas !

<ModeJokeON>
On parle pas de bagnole conG, hein conG ? ;-DDD
<ModeJokeOFF>
0
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 472
20 nov. 2010 à 18:40
ModeJokeON>

On parle pas de bagnole conG, hein conG ?

pourtant je bosse dans un grand garage très réputé conG .... ^^

<ModeJokeOFF>
0
Merci bobo

Amicalement
leloup
0
Bonjour Zipe31,

le fait de convertir ne change malheureusement rien.

Amicalement
leloup
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
22 nov. 2010 à 08:20
Il est pénible ce système AIX, pourtant il est récent.
Comme c'est un système assez peu répendu, difficile de trouver quelqu'un qui a le même et peu tester.
Si awk ne fonctionne pas, il reste comme je te le disais l'utilisation des commandes "grep cut tail head wc".
Ou alors, tu récupères un awk Linux que tu compiles toi même (à nommé GNUawk pour ne pas confondre).
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
22 nov. 2010 à 09:06
On a bien un spécialiste (AIX, Solaris, etc.) ici en la personne de dubcek (maitre awk s'il en est de surcroit) mais ça fait un moment qu'on ne l'a pas vu ;-\

Faudrait voir du côté de perl peut-être ( lami20j si tu passes par là...) ;-))
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
22 nov. 2010 à 09:39
perl...
open(fic,"<fichier");
while( defined ($lect=<fic>) )
{
    push @tot,"$lect\n";
}
close fic;
@blocks=split /MAGASIN/,$tot;
for ($n=0;$n<$#blocks;$n++)
{
    @lignes=split /\n/,blocks[$n]:
    for ($m=2;$m<8;$m++)   #commence à 2 pour sauter premières lignes
    {
         @champs=split / +/,lignes[$m];
         if(champs[1] != champs[2] || champs[3] != champs[4]){/* fonction écrivant tout le bloc*/; last;}
    }
}

Bon, voilà, je ne suis pas un expert en perl, donc il faut surement débuguer pas mal, mais je pense que ça peut être une bonne base.
0
Ok j'ai envoyé un petit mp plein de nouveaux espoir à Dubcek.

Encore merci à tous pour votre soutien et votre aide.

Amicalement
leloup
0