[Unix korn shell] Convertir une liste
Résolu
Karamurat
Messages postés
45
Statut
Membre
-
Karamurat Messages postés 45 Statut Membre -
Karamurat Messages postés 45 Statut Membre -
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 !
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:
- [Unix korn shell] Convertir une liste
- Liste déroulante excel - Guide
- Classic shell - Télécharger - Personnalisation
- Liste code ascii - Guide
- Liste déroulante en cascade - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
21 réponses
Voila:
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 , substr($2,1,4),substr($2,length($2) - 3
,4), full)}
' ROLE=TAXMNG LEVEL=NO DB=LOP1 MODULE=$MODULE < comp_4.txt
done
Merci encore a dubcek et jipicy ;)
voici la version finale :
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, substr($2,1,4),substr($2,length($2) - 3,4),
full)}
' ROLE=TAXMNG LEVEL=NO DB=LOP1 MODULE=$MODULE < comp_4.txt
done
voici la version finale :
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, substr($2,1,4),substr($2,length($2) - 3,4),
full)}
' ROLE=TAXMNG LEVEL=NO DB=LOP1 MODULE=$MODULE < comp_4.txt
done
Salut,
C'est pas très clair ton histoire...
Les variables sont fournies en paramètres au script ? Ou elles doivent être codées en dur dans le script ?
Le fichier d'entrée a-t-il toujours les 3 premières lignes de présentation ?
Je suppose que la clause incluant le "1" en fin de ligne c'est le "F" de "lawsoncompanyF" ?
Voilà déjà une ébauche en pur ksh (désolé pas de "awk" dans cette solution et testé sur une liste ne comprenant pas les 3 lignes d'en-tête) :
C'est pas très clair ton histoire...
Les variables sont fournies en paramètres au script ? Ou elles doivent être codées en dur dans le script ?
Le fichier d'entrée a-t-il toujours les 3 premières lignes de présentation ?
Je suppose que la clause incluant le "1" en fin de ligne c'est le "F" de "lawsoncompanyF" ?
Voilà déjà une ébauche en pur ksh (désolé pas de "awk" dans cette solution et testé sur une liste ne comprenant pas les 3 lignes d'en-tête) :
#! /bin/ksh
ROLE=TAXMNG
DB=LOP1
MODULE=AP
LEVEL=NO
while read line
do
if [ $(expr ${line%:*} : '.*\(.\)') = "F" ]
then
echo "\"${ROLE}-${LEVEL}\",\"${DB}\",\"${MODULE}\",99,${line#*: },${line#*: },\" !\",\"~~~~~~~~~~~~~~~\",1"
else
echo "\"${ROLE}-${LEVEL}\",\"${DB}\",\"${MODULE}\",99,${line#*: },${line#*: },\" !\",\"~~~~~~~~~~~~~~~\","
fi
done < fichier_d_entree;-))
Bonjour
et encore merci , tu est vraiment formidable ,
pour répondre a tes question
<quote>Le fichier d'entrée a-t-il toujours les 3 premières lignes de présentation ? </quote>
non, c'est uniquement pour présenter la chose .
<quote>Je suppose que la clause incluant le "1" en fin de ligne c'est le "F" de "lawsoncompanyF"</quote>
c'est tout a fait ça, 1 qund c'est lawsoncompanyF et "blanc" quand c'est lawsoncompanyl
voila
je te remercie d'avance !
et encore merci , tu est vraiment formidable ,
pour répondre a tes question
<quote>Le fichier d'entrée a-t-il toujours les 3 premières lignes de présentation ? </quote>
non, c'est uniquement pour présenter la chose .
<quote>Je suppose que la clause incluant le "1" en fin de ligne c'est le "F" de "lawsoncompanyF"</quote>
c'est tout a fait ça, 1 qund c'est lawsoncompanyF et "blanc" quand c'est lawsoncompanyl
voila
je te remercie d'avance !
Hi
C'est du COBOL ?
Quel est le critère du 1 final ? le F comme suppose jipicy, mais 2028 a un I ?
C'est du COBOL ?
Quel est le critère du 1 final ? le F comme suppose jipicy, mais 2028 a un I ?
awk -F: '/^lawson/ {printf("\"%s-%s\",\"%s\",\"%s\",99,%s,%s,\" !\",\"~~~~~~~~~~~~~~~\",1",
ROLE, LEVEL, DB, MODULE, $2, $2)}' ROLE=TAXMNG LEVEL=NO DB=LOP1 MODULE=AP < input.txt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je corrige
awk -F: '/^law.*I/ {full="" } ; /^law.*F/ {full="1"} ; /^lawson/ {printf("\"%s-%s\",\"%s\",\"%s\",99,%s,%s,\" !\",\"~~~~~~~~~~~~~~~\",%s",
ROLE, LEVEL, DB, MODULE, $2, $2, full)}' ROLE=TAXMNG LEVEL=NO DB=LOP1 MODULE=AP < input.txt
pfffffffffffff que je suis c*n, pour le ".*[0-9][0-9]*$", j'avais omis la réponse de "Karamurat," et pas vu qu'il n'y avait pas les 3 premières lignes dans le fichier, toutes mes excuses "dubcek" ;-((
Hi C'est du COBOL ? Quel est le critère du 1 final ? le F comme suppose jipicy, mais 2028 a un I ?
Oups je n'avais pas vue mais il n'y pas de 1
donc sa donne :
"TAXMNG-NO","LOP1","AP",99,2028,2028," !","~~~~~~~~~~~~~~~",
revenons au problème, je vais un peu corser la chose (j'ai essayer a plusieur reprise mais tjs pas réussie) est-il possible de remplacer 99 par les n° de séquence c'est a dire 1 , 2 , 3 etc..
et de remplacer la cologne "comp" te tel sorte que si j'ai un fichier d'entrer avec plusieur compagnie soit
par exemple :
lawsoncompanyI: 2028-2029
lawsoncompanyI: 2030-2069
lawsoncompanyF: 2079
lawsoncompanyF: 2100
lawsoncompanyF: 2161
lawsoncompanyF: 2237
lawsoncompanyF: 2307
lawsoncompanyF: 2334
lawsoncompanyF: 2340
lawsoncompanyF: 2368
lawsoncompanyF: 2369-3045
lawsoncompanyF: 3526
lawsoncompanyF: 4000
lawsoncompanyF: 4001
lawsoncompanyF: 4002
lawsoncompanyF: 4003
lawsoncompanyF: 4008
lawsoncompanyF: 4009
lawsoncompanyF: 4010
lawsoncompanyF: 4011
lawsoncompanyF: 4012-4015
lawsoncompanyF: 4016
lawsoncompanyF: 4056
et de le reformater en cette liste :
avec la description des colonnes :
${ROLE}-${LEVEL} ${DB} ${MODULE} =N°de sequence fromComp toComp fixed fixed =1 if Full
pour pouvoir avoir ça :
"TAXMNG-NO","LOP1","AP",01,4012,4015," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AP",02,2369,3045," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AP",03,2079,2079," !","~~~~~~~~~~~~~~~",1
etc...
Merci encore
Tu ne veux que les lignes ayant un "fromComp toComp", ou bien toutes les lignes aussi comme dans ton 1er post ???
toute les lignes comme dans le premier post ,oui,
exemple:
"TAXMNG-NO","LOP1","AP",01,4012,4015," !","~~~~~~~~~~~~~~~",1
---> correspont à lawsoncompanyF: 4012-4015
"TAXMNG-NO","LOP1","AP",02,2369,3045," !","~~~~~~~~~~~~~~~",1
---> correspont à lawsoncompanyF: 2369-3045
"TAXMNG-NO","LOP1","AP",03,2079,2079," !","~~~~~~~~~~~~~~~",1
---> correspont à lawsoncompanyF: 2079-2079
etc ...
merci
exemple:
"TAXMNG-NO","LOP1","AP",01,4012,4015," !","~~~~~~~~~~~~~~~",1
---> correspont à lawsoncompanyF: 4012-4015
"TAXMNG-NO","LOP1","AP",02,2369,3045," !","~~~~~~~~~~~~~~~",1
---> correspont à lawsoncompanyF: 2369-3045
"TAXMNG-NO","LOP1","AP",03,2079,2079," !","~~~~~~~~~~~~~~~",1
---> correspont à lawsoncompanyF: 2079-2079
etc ...
merci
En remplacant le 99 par %02d et en ajoutant comp++ après MODULE, tu auras un compteur sur 2 caractères 01,02,03, etc
Et le critère de numérotation s'appuie sur quelle référence ? (01, 02, 03, etc.)
le critère de numérotation s'appuie sur les lignes (par classement)
donc voici ce que j'ai concocter grâce au précieuse aides que m'avez vous fournis ,j'ai un peu arranger et rajouter des choses :
MODULE_LIST="AM AP AR BL"
for MODULE in $MODULE_LIST
do
awk -F " " '
/^law.*I/ {full="" } # Inquiry access
/^law.*F/ {full="1"} # Full access
/^lawson.*: .*[0-9][0-9]*$/ {
printf("\"%s-%s\",\"%s\",\"%s\",%s,%s,%s,\" !\",\"~~~~~~~~~~~
~~~~\",%s\n",
ROLE, LEVEL, DB, MODULE, ++comp - 1, substr($2,1,4),substr($2,length($2) - 3
,4), full)}
' ROLE=TAXMNG LEVEL=NO DB=LOP1 MODULE=$MODULE < comp_4.txt
done
MODULE_LIST="AM AP AR BL"
for MODULE in $MODULE_LIST
do
awk -F " " '
/^law.*I/ {full="" } # Inquiry access
/^law.*F/ {full="1"} # Full access
/^lawson.*: .*[0-9][0-9]*$/ {
printf("\"%s-%s\",\"%s\",\"%s\",%s,%s,%s,\" !\",\"~~~~~~~~~~~
~~~~\",%s\n",
ROLE, LEVEL, DB, MODULE, ++comp - 1, substr($2,1,4),substr($2,length($2) - 3
,4), full)}
' ROLE=TAXMNG LEVEL=NO DB=LOP1 MODULE=$MODULE < comp_4.txt
done
bon j'ai un autre probleme
je veux que quand il liste (0,1,2,3,etc...) lorsque qu'il numérote les lignes le "0" soit nul c'est a dire que le "0" ne s'affiche pas a l'écran
je veux passer de ça :
"TAXMNG-NO","LOP1","AR",0,2028,2028," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",1,2030,2030," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",2,2079,2079," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",3,2100,2110," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",4,2161,2161," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",5,2237,2237," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",6,2307,2307," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",7,2334,2334," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",8,2340,2340," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",9,2368,2368," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",10,2369,2369," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",11,3526,3526," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",12,4000,4003," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",13,4008,4012," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",14,4016,4016," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",15,4056,4069," !","~~~~~~~~~~~~~~~",1
à ça :
"TAXMNG-NO","LOP1","AR",,2028,2028," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",1,2030,2030," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",2,2079,2079," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",3,2100,2110," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",4,2161,2161," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",5,2237,2237," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",6,2307,2307," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",7,2334,2334," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",8,2340,2340," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",9,2368,2368," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",10,2369,2369," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",11,3526,3526," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",12,4000,4003," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",13,4008,4012," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",14,4016,4016," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",15,4056,4069," !","~~~~~~~~~~~~~~~",1
merci d'avance
je veux que quand il liste (0,1,2,3,etc...) lorsque qu'il numérote les lignes le "0" soit nul c'est a dire que le "0" ne s'affiche pas a l'écran
je veux passer de ça :
"TAXMNG-NO","LOP1","AR",0,2028,2028," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",1,2030,2030," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",2,2079,2079," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",3,2100,2110," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",4,2161,2161," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",5,2237,2237," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",6,2307,2307," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",7,2334,2334," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",8,2340,2340," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",9,2368,2368," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",10,2369,2369," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",11,3526,3526," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",12,4000,4003," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",13,4008,4012," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",14,4016,4016," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",15,4056,4069," !","~~~~~~~~~~~~~~~",1
à ça :
"TAXMNG-NO","LOP1","AR",,2028,2028," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",1,2030,2030," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",2,2079,2079," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",3,2100,2110," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",4,2161,2161," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",5,2237,2237," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",6,2307,2307," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",7,2334,2334," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",8,2340,2340," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",9,2368,2368," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",10,2369,2369," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",11,3526,3526," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",12,4000,4003," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",13,4008,4012," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",14,4016,4016," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",15,4056,4069," !","~~~~~~~~~~~~~~~",1
merci d'avance
remplacer ++comp - 1 par x=++comp - 1 ? x : ""
après avoir remplacer ++comp - 1 par x=++comp - 1 ? x : ""
j'ai eu ça :
"TAXMNG-NO","LOP1","AR",,2028,2028," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",,2030,2030," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",,2079,2079," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,2100,2110," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,2161,2161," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,2237,2237," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,2307,2307," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",,2334,2334," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,2340,2340," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,2368,2368," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,2369,2369," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,3526,3526," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,4000,4003," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,4008,4012," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,4016,4016," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,4056,4069," !","~~~~~~~~~~~~~~~",1
a moins que j'ai du faire une erreur , ça ne fct pas .
j'ai eu ça :
"TAXMNG-NO","LOP1","AR",,2028,2028," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",,2030,2030," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",,2079,2079," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,2100,2110," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,2161,2161," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,2237,2237," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,2307,2307," !","~~~~~~~~~~~~~~~",
"TAXMNG-NO","LOP1","AR",,2334,2334," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,2340,2340," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,2368,2368," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,2369,2369," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,3526,3526," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,4000,4003," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,4008,4012," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,4016,4016," !","~~~~~~~~~~~~~~~",1
"TAXMNG-NO","LOP1","AR",,4056,4069," !","~~~~~~~~~~~~~~~",1
a moins que j'ai du faire une erreur , ça ne fct pas .
je constate un ptit probleme , donc voila j'ai une liste d'entrer comme ceci :
et j'ai ça:
comment faire pour faire apparaitre le tiret "-" comme séparateur ?
Auriez vous une solution ?
lawsoncompanyF: 2 lawsoncompanyF: 4-5 lawsoncompanyF: 7-9 lawsoncompanyF: 12 lawsoncompanyF: 15-18 lawsoncompanyF: 20 lawsoncompanyF: 23-24 lawsoncompanyF: 29 lawsoncompanyF: 32-34 lawsoncompanyF: 38 lawsoncompanyF: 41 lawsoncompanyF: 43-44 lawsoncompanyF: 46-47
et j'ai ça:
"TAXMNG-NO","LOP1","AM",,2,2," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",1,4-5,4-5," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",2,7-9,7-9," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",3,12,12," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",4,15-1,5-18," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",5,20,20," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",6,23-2,3-24," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",7,29,29," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",8,32-3,2-34," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",9,38,38," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",10,41,41," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",11,43-4,3-44," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",12,46-4,6-47," !","~~~~~~~~~~~~~~~",1
comment faire pour faire apparaitre le tiret "-" comme séparateur ?
Auriez vous une solution ?
Oui donc j'aurais voulue avoir une liste de sortie de cette sorte :
et non pas comme celle d'en haut ,
c'est à dire si j'ai ça (liste d'entrer) :
alors j'ai ça - liste sortie :
au lieu de ça :
cela fonctionne pour les nombres a 4 chiffres :
liste d'entrer :
liste de sortie :
"TAXMNG-NO","LOP1","AM",,2,2," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",1,4,5," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",2,7,9," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",3,12,12," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",4,15,18," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",5,20,20," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",6,23,24," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",7,29,29," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",8,32,34," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",9,38,38," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",10,41,41," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",11,43,44," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",12,46,47," !","~~~~~~~~~~~~~~~",1
et non pas comme celle d'en haut ,
c'est à dire si j'ai ça (liste d'entrer) :
lawsoncompanyF: 46-47
alors j'ai ça - liste sortie :
"TAXMNG-NO","LOP1","AM",12,46-4,6-47," !","~~~~~~~~~~~~~~~",1
au lieu de ça :
"TAXMNG-NO","LOP1","AM",12,46,47," !","~~~~~~~~~~~~~~~",1
cela fonctionne pour les nombres a 4 chiffres :
liste d'entrer :
lawsoncompanyI: 1708 lawsoncompanyI: 1996 lawsoncompanyI: 1998-1999
liste de sortie :
"TAXMNG-NO","LOP1","BL",65,1708,1708," !","~~~~~~~~~~~~~~~", "TAXMNG-NO","LOP1","BL",66,1996,1996," !","~~~~~~~~~~~~~~~", "TAXMNG-NO","LOP1","BL",67,1998,1999," !","~~~~~~~~~~~~~~~",
J'ai passé une bonne partie de l'après-midi d'hier à essayer avec la fonction "split" de "awk" sans succès ;-(
Faudrait essayer de traiter le cas dans la boucle (avec "sed" par exemple) avant le traitement par "awk", récupérer la mise en forme dans une variable et l'injecter dans le "printf"...
Bon là je pars bosser, pas le temps de voir ça ;-(
Faudrait essayer de traiter le cas dans la boucle (avec "sed" par exemple) avant le traitement par "awk", récupérer la mise en forme dans une variable et l'injecter dans le "printf"...
Bon là je pars bosser, pas le temps de voir ça ;-(
Hmm..
Merci beaucoup pour avoir investit du temps pour mon cas ...,de plus Comment aurai je pût en arriver la sans votre aide ?
pourrai tu m'éclaircir d'avantage sur se "sed" ,car j'ai galèrer toute la journée hier et avant hier ... je commence a ne plus avoir d'espoir ...
en attendant une réponse positif ...
Merci beaucoup pour avoir investit du temps pour mon cas ...,de plus Comment aurai je pût en arriver la sans votre aide ?
pourrai tu m'éclaircir d'avantage sur se "sed" ,car j'ai galèrer toute la journée hier et avant hier ... je commence a ne plus avoir d'espoir ...
en attendant une réponse positif ...
je crois que c'est peut etre possible avec "match" de "awk", mais j'aurais besoin d'un coup de pouce !
si je prend le tiret
si je prend le tiret
-comme séparateur ,tous devrais ce régler ...
On peut définir plusieur séparateurs dans awk : awk -F"[ ;]"
<espace> et ; sont séparateurs.
<espace> et ; sont séparateurs.
Salut dubcek,
Par contre est-il possible de redéfinir la variable "FS" le temps de définir une variable sur un test, du genre :
Je pensais inclure un truc du genre dans ton script afin d'assigner directement la valeur avec virgule à une variable et l'inclure dans le "printf" final...
Merci d'avance ;-))
Par contre est-il possible de redéfinir la variable "FS" le temps de définir une variable sur un test, du genre :
awk -F " " '
$2 ~ /-/ { FS="-"; var=$1","$2 }
{ print var }
' < fichierL'exemple ci-dessus ne marche pas ;-(
Je pensais inclure un truc du genre dans ton script afin d'assigner directement la valeur avec virgule à une variable et l'inclure dans le "printf" final...
Merci d'avance ;-))
bon j'ai réussi avec "match" de "awk" pour la deuxieme cologne de compagnie se qui donne comme script :
si j'ai ça :
et donc j'ai ça :
mais je n'arrive pas a afficher le reste des compagnie (pour la premier cologne) pour les compagnie ne comportant pas de tiret comme pour la compagnie 2 alors que ça fonctionne pour la compagnie 43-44 par ex.
c'est a dire comme ceci :
merci d'avance ,
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, 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
si j'ai ça :
lawsoncompanyF: 2 lawsoncompanyF: 4-5 lawsoncompanyF: 7-9 lawsoncompanyF: 12 lawsoncompanyF: 15-18 lawsoncompanyF: 20 lawsoncompanyF: 23-24 lawsoncompanyF: 29 lawsoncompanyF: 32-34 lawsoncompanyF: 38 lawsoncompanyF: 41 lawsoncompanyF: 43-44 lawsoncompanyF: 4666-4766
et donc j'ai ça :
"TAXMNG-NO","LOP1","AM",,,2," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",1,4,5," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",2,7,9," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",3,,12," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",4,15,18," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",5,,20," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",6,23,24," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",7,,29," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",8,32,34," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",9,,38," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",10,,41," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",11,43,44," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",12,4666,4766," !","~~~~~~~~~~~~~~~",1
mais je n'arrive pas a afficher le reste des compagnie (pour la premier cologne) pour les compagnie ne comportant pas de tiret comme pour la compagnie 2 alors que ça fonctionne pour la compagnie 43-44 par ex.
c'est a dire comme ceci :
"TAXMNG-NO","LOP1","AM",,2,2," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",1,4,5," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",2,7,9," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",3,12,12," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",4,15,18," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",5,20,20," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",6,23,24," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",7,29,29," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",8,32,34," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",9,38,38," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",10,41,41," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",11,43,44," !","~~~~~~~~~~~~~~~",1 "TAXMNG-NO","LOP1","AM",12,4666,4766," !","~~~~~~~~~~~~~~~",1
merci d'avance ,