Aide sur un traitement fichier sur Aix
leloup
-
Char Snipeur Messages postés 10112 Statut Contributeur -
Char Snipeur Messages postés 10112 Statut Contributeur -
Bonjour, à tous,
J'ai un fichier qui est monté comme cela :
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 :
Est ce possible et surtout comment s'y prendre ?
Merci d'avance pour votre aide.
Cordialement à tous
Leloup
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:
- Aide sur un traitement fichier sur Aix
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
19 réponses
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 :
un penguin sur la banquise !
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 !
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
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
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é ;-\
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é ;-\
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 :
Et je voudrais récuperer :
Merci pour votre aide
Cordialement
Leloup
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question$ 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
$
;-))
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
awk, je l'oublie toujours celle là.
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur
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 ;-((
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 !
^^
Par contre, diff permet de comparer 2 fichiers mais non un seul fichier me semble t'il.
exact !
^^
Merci encore à tous pour votre aide.
Désolé mais la commande
ne me renvoi rien.
Cordialement
Leloup
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
Bonjour,
Désolé, mais
Merci encore pour vos efforts et votre aide
Cordialement
Leloup
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
Merci Zipe31,
Le lien est : http://www.cijoint.fr/cjlink.php?file=cj201011/cijoANWETP.txt
Cordialement
Leloup
Le lien est : http://www.cijoint.fr/cjlink.php?file=cj201011/cijoANWETP.txt
Cordialement
Leloup
Ben chez moi ça marche sans problème ;-\
C'est les bons ?
Essayes avec "gawk" ou "nawk" ;-\
$ 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" ;-\
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
;-))
Désolé,
la commande fonctionne a merveille sous linux, mais s'entête à ne rien renvoyé sous mon aix.
Je suis perdu
Cordialement
Leloup
la commande fonctionne a merveille sous linux, mais s'entête à ne rien renvoyé sous mon aix.
Je suis perdu
Cordialement
Leloup
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
C'est quand meme incroyable que ca fonctionne a merveille sous linux et que ca ne renvoi strictement rien sous aix.
Amicalement
leloup
Non car Dos2unix n'est pas installé sous l'aix
Et en convertissant avec "sed" (Conversion retours chariots DOS (CRLF) / UNIX (LF)) ?
Et en convertissant avec "sed" (Conversion retours chariots DOS (CRLF) / UNIX (LF)) ?
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).
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).
perl...
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.
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.