[Unix korn shell] Convertir une liste

Résolu/Fermé
Karamurat Messages postés 43 Date d'inscription jeudi 12 juillet 2007 Statut Membre Dernière intervention 4 janvier 2011 - 22 juil. 2007 à 08:30
Karamurat Messages postés 43 Date d'inscription jeudi 12 juillet 2007 Statut Membre Dernière intervention 4 janvier 2011 - 5 août 2007 à 07:52
bonjour

j'ai besoin de votre aide pour convertir cette liste (fichier d'entrer ) :


INPUT
Input file comp.txt
lawsonlevel: NO

lawsoncompanyI: 2028
lawsoncompanyI: 2030
lawsoncompanyF: 2079
lawsoncompanyF: 2100
lawsoncompanyF: 2161
lawsoncompanyF: 2237
lawsoncompanyF: 2307
lawsoncompanyF: 2334
lawsoncompanyF: 2340
lawsoncompanyF: 2368
lawsoncompanyF: 2369
lawsoncompanyF: 3526
lawsoncompanyF: 4000
lawsoncompanyF: 4001
lawsoncompanyF: 4002
lawsoncompanyF: 4003
lawsoncompanyF: 4008
lawsoncompanyF: 4009
lawsoncompanyF: 4010
lawsoncompanyF: 4011
lawsoncompanyF: 4012
lawsoncompanyF: 4016
lawsoncompanyF: 4056


avec les parametres d'entrer :

ROLE=TAXMNG

DB=LOP1

MODULE=AP

LEVEL=NO


fussionner le tout pour pouvoir avoir un fichier de sortie de cette nature la :

avec la description des colonnes :

${ROLE}-${LEVEL} ${DB} ${MODULE} =99 Comp Comp fixed fixed =1 if Full


pour pouvoir avoir ça :

"TAXMNG-NO","LOP1","AP",99,2028,2028," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AP",99,2030,2030," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AP",99,2079,2079," !","~~~~~~~~~~~~~~~",1



le tout avec la commande awk si possible ,

Merci encore a tous !
A voir également:

21 réponses

Karamurat Messages postés 43 Date d'inscription jeudi 12 juillet 2007 Statut Membre Dernière intervention 4 janvier 2011 2
5 août 2007 à 07:52
apres plusieurs essai , j'ai réussi a trouver le commande qui a permit la résolution grace a" match" de "awk" ! ouf !
MODULE_LIST="AM AP AR BL"

for MODULE in $MODULE_LIST
do
awk -F " " '
BEGIN{comp=0}

 /^law.*I/ {full="" }  # Inquiry access

 /^law.*F/ {full="1"}  # Full access

 /^lawson.*: [0-9][0-9]*$/{
        x=++comp - 1
        if(x) s=sprintf("%d",x)
        else s=""

        printf("\"%s-%s\",\"%s\",\"%s\",%s,%s,%s,\"    !\",\"~~~~~~~~~~~~~~~\",%s\n",
        ROLE, LEVEL, DB, MODULE, s, $2, $2, full)}

 /^lawson.*: [0-9][0-9]*-[0-9][0-9]*$/{
        x=++comp - 1
        if(x) s=sprintf("%d",x)
        else s=""

        printf("\"%s-%s\",\"%s\",\"%s\",%s,%s,%s,\"    !\",\"~~~~~~~~~~~~~~~\",%s\n",
        ROLE, LEVEL, DB, MODULE, s,substr($2,1,match($2,"-")-1), substr($2,match($2,"-")+1,4), full)}


      ' ROLE=TAXMNG LEVEL=NO DB=LOP1 MODULE=$MODULE  < comp_4.txt
done


faite moi signe il peut y avoir simplification ;)
0