Un script avec awk

akarislove Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
akarislove Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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)
A voir également:

5 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
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
akarislove Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
je veux extraire les messages à partir de monFichier et les mettre dans autant de fichiers que de messages extraits (exemple fichier1,... fichiern)
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
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
akarislove Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
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

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

Posez votre question
akarislove Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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