Convertir un fichier RBM en csv
Par AMO
En réorganisant mes outils, je suis retombé sur un script awk bien pratique (mais qui date: juillet 2012). Il permet de générer un fichier CSV à partir d’un fichier de log RBM.
#############################################
# Genere le tableau recapitulatif des erreurs
# d apres un compte-rendu RBM de type '400'
#############################################
BEGIN {
ENTETE = "todo";
CPT = 1 ;
sp[0] = "";
for (i=1;i<=80;i++) { sp[i] = sp[i-1] " " }
erreur["matr"]=sp[23];
erreur["code"]=sp[06];
erreur["type"]=sp[13];
erreur["natu"]=sp[15];
erreur["grav"]=sp[14];
erreur["libe"]=sp[80];
erreur["stdo"]=sp[02];
erreur["info"]=sp[02];
erreur["zone"]=sp[20];
erreur["trai"]=sp[09];
erreur["zonl"]=sp[50];
}
# 3 types d'erreurs à traiter : Utilisateur , Compatibilité
# et Dictionnaire
# TRONC COMMUN
$0 ~ /^EMETTEUR : .*/ { erreur["emet"] = substr($0, 12, 10); }
$0 ~ /^EMETTEUR : .*/ { erreur["date"] = substr($0, 22, 10); }
$0 ~ /^I INFORMATION : .*/ { erreur["info"] = substr($0, 18, 2); }
$0 ~ /^I --.*/ { erreur["info"] = " "; }
$0 ~ /^I STRUCTURE DE DONNEES : ZY CLE DU DOSSIER : .*/ {
erreur["matr"] = substr($0, 51, 3) ";" substr($0, 54, 12) ;
}
$0 ~ /^I Type d'erreur : .*/ {
erreur["type"]=sp[13];
erreur["natu"]=sp[15];
erreur["grav"]=sp[14];
erreur["type"] = substr($0, 20, 16);
erreur["natu"] = substr($0, 46, 15);
erreur["grav"] = substr($0, 72, 14);
erreur["stdo"] = "ZY";
}
# ERREUR UTILISATEUR
$0 ~ /^I Groupe de traitement : .*/ {
erreur["trai"]=sp[09];
erreur["trai"] = substr($0, 27, 2) "-" substr($0, 48, 6);
}
$0 ~ /^I Code erreur : .*/ {
if (substr($0, 22, 1) != "L") {
erreur["code"]=sp[06];
erreur["zonl"]=sp[50];
erreur["code"] = substr($0, 18, 6);
erreur["zonl"] = substr($0, 38, 50);
}
}
$0 ~ /^I Libelle : .*/ {
erreur["libe"]=sp[80];
erreur["libe"] = substr($0, 18, 80);
# ECRITURE ERREUR UTILISATEUR
ligne = erreur["date"] ";" erreur["emet"] ";" erreur["matr"] ";" erreur["type"] ";" erreur["natu"] ";" erreur["grav"] ";" erreur["stdo"] ";" erreur["info"] ";" erreur["zonl"] ";" erreur["code"] ";" erreur["trai"] ";" erreur["libe"] ";" ;
print(ligne);
erreur["code"]=sp[06];
erreur["type"]=sp[13];
erreur["natu"]=sp[15];
erreur["grav"]=sp[14];
erreur["libe"]=sp[80];
erreur["stdo"]=sp[02];
erreur["zone"]=sp[20];
erreur["trai"]=sp[09];
erreur["zonl"]=sp[50];
CPT++;
}
# ERREUR COMPATIBILITE
$0 ~ /^I Structure de données : .*/ {
if (substr($0, 65, 1) == "D") {
erreur["matr"] = substr($0, 65, 3) ";" substr($0, 68, 12) ;
}
erreur["stdo"] = substr($0, 27, 2);
erreur["info"] = substr($0, 49, 2);
erreur["zonl"] = substr($0, 65, 50);
}
$0 ~ /^I Code erreur : .*/ {
if (substr($0, 22, 1) == "L") {
erreur["code"] = substr($0, 18, 3)" ";
erreur["libe"] = substr($0, 32, 80);
ligne = erreur["date"] ";" erreur["emet"] ";" erreur["matr"] ";" erreur["type"] ";" erreur["natu"] ";" erreur["grav"] ";" erreur["stdo"] ";" erreur["info"] ";" erreur["zonl"] ";" erreur["code"] ";" erreur["trai"] ";" erreur["libe"] ";" ;
print(ligne);
erreur["code"]=sp[06];
erreur["type"]=sp[13];
erreur["natu"]=sp[15];
erreur["grav"]=sp[14];
erreur["libe"]=sp[80];
erreur["stdo"]=sp[02];
erreur["zone"]=sp[20];
erreur["trai"]=sp[09];
erreur["zonl"]=sp[50];
CPT++;
}
}
END {}