Un script avec awk

Bonjour,
j'ai un fichier MonFichier, il comporte un ensemble de messages délimités par deux codes ascii ^A au début du message et ^C à la fin de ce message. je vous fais remarquer aussi
qu'à la fin du message, il y'a le début du message suivant.

je veux extraire ces messages dans d'autres fichiers avec la commande awk et je n'arrive pas mon système est (AIX)

5 réponses

  1. Contributeur
    Bonjour,

    Merci de poster un exemple concret (copier/coller* ou lien vers un fichier à récupérer) AVANT => APRÈS de ce que tu veux...

    * Pour le Copier/Coller prévoir un affichage prenant en compte les caractères non-imprimables du style "cat -A fichier" ou "sed -n l fichier"
    1
    1. je veux extraire les messages à partir de monFichier et les mettre dans autant de fichiers que de messages extraits (exemple fichier1,... fichiern)
      0
      1. Contributeur
        Oui ça je l'ai bien compris ;-)

        Ce que je te demande c'est un exemple CONCRET de ton fichier de départ (avec les caractères non-imprimables visibles) afin que nous puissions adapter au mieux le code...

        Donc merci d'afficher ton fichier (ou un bout à défaut) ainsi qu'un exemple du résultat attendu (le contenu de fichier1 ou fichier2, etc.)
        0
    2. voila un exemple de fichier, qui comporte un message et le début du deuxième message, à la fin du premier:
      {1:F21SOGEDZALAXXX3448424488}{4:{177:1005140900}{451:0}}{1:F01SOGEDZALAXXX3448424488}{2:O9502202100513SOGEFRPPDXXX64162187971005140800N}{3:{108:EEX14001538}}{4:
      :20:E32271/02-130510
      :25:001013227180
      :28C:00575/00002
      :60M:C100513EUR11785239,21
      :61:1005130513D7166,96S10300008TRF09077733//1327422
      1327422S103
      :61:1005130513D7166,96S10300008TRF09077734//1327351
      1327351S103
      :61:1005130513D2615,75S90000012CDI09018831//00012CDI09018831
      1333014S900
      :61:1005130513D1994,67S10300102TRF09077742//1335862
      1335862S103
      :61:1005130513D1994,67S10300102TRF09077743//1335874
      1335874S103
      :61:1005130513D1496,S10300102TRF09077740//1330876
      1330876S103
      :61:1005130513D1496,S10300102TRF09077741//1330826
      1330826S103
      :61:1005130513D870,7S10300202TRF09077766//1330209
      1330209S103
      :61:1005130513D658,83S10300202TRF09077764//1330215
      1330215S103
      :61:1005130513D535,6S10300010TRF09077753//1330461
      1330461S103
      :61:1005130513C50,S1030229013204190000//1321489
      1321489S103
      :61:1005130513C85,S1030081813200580000//1322154
      1322154S103
      :61:1005130513C100,S1030376613205020000//1324020
      1324020S103
      :61:1005130513C155,S1030125013213290000//1322116
      1322116S103
      :61:1005130513C165,S1030111013202250000//1322129
      1322129S103
      :61:1005130513C200,S1030424013212410000//1320733
      1320733S103
      :61:1005130513C205,S1030125013213300000//1322117
      1322117S103
      :61:1005130513C260,37S1033016876348//1335732
      1335732S103
      :61:1005130513C271,29S1030227013203340000//1321698
      1321698S103
      :61:1005130513C285,S1030227013203370000//1322124
      1322124S103
      :61:1005130513C300,S1030067013204130000//1324644
      1324644S103
      :61:1005130513C300,S202A05D10132L62542//A05D10132L62542C
      0350142S202
      :61:1005130513C305,S1030426013202730000//1322166
      1322166S103
      :61:1005130513C350,S1030227013203180000//1329617
      1329617S103
      :62M:C100513EUR11762274,73
      -}{5:{CHK:427351B7F3CE}{DLM:}}{S:{COP:P}} {1:F21SOGEDZALAXXX3448424489}{4:{177:1005140900}{451:0}}{1:F01SOGEDZALAXXX3448424489}{2:O9502202100513SOGEFRPPFXXX27264874571005140800N}{3:{108:EEX14001537}}{4:
      0
      1. Contributeur
        Bon "awk" n'étant pas ma tasse de thé, ça risque de me prendre un peu de temps pour trouver la bonne syntaxe ;-\

        En espérant que "dubcek" passe dans le coin, pour lui ça ne devrait être qu'une formalité ;-)
        0
    3. Contributeur
      Bon après moults essais sur une copie de ce que tu as donné, normalement cette syntaxe devrait faire l'affaire :

      awk 'BEGIN {RS="\003 \001"}{ for (i = 1;i < FNR;i++); NR==i; {print $0 > "fich"i".txt"} }'
      0
      1. un grand merci zipe31, tu te débrouilles très bien pour quelqu'un qui ne s'y connait pas sur AWK , j'aimerais bien connaitre ton domaine de prédilection (rires)
        0