[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
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
A voir également:
- [Unix korn shell] Convertir une liste
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Convertir youtube en mp3 avec audacity - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
21 réponses
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
23 juil. 2007 à 09:31
23 juil. 2007 à 09:31
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
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
23 juil. 2007 à 10:07
23 juil. 2007 à 10:07
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
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
22 juil. 2007 à 10:12
22 juil. 2007 à 10:12
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;-))
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
22 juil. 2007 à 10:29
22 juil. 2007 à 10:29
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 !
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
22 juil. 2007 à 10:55
22 juil. 2007 à 10:55
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
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
22 juil. 2007 à 11:10
22 juil. 2007 à 11:10
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
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
22 juil. 2007 à 11:15
22 juil. 2007 à 11:15
Superbe ;-))
Mais si je peux me permettre...
Mais si je peux me permettre...
awk -F: '/^law.*I/ {full="" } ; /^law.*F/ {full="1"} ; /^lawson.*[0-9][0-9]*$/ {printf("\"%s-%s\",\"%s\",\"%s\",99,%s,%s,\" !\",\"~~~~~~~~~~~~~~~\",%s\n", ROLE, LEVEL, DB, MODULE, $2, $2, full)}' ROLE=TAXMNG LEVEL=NO DB=LOP1 MODULE=AP < input.txt;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
22 juil. 2007 à 11:18
22 juil. 2007 à 11:18
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" ;-((
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
22 juil. 2007 à 12:20
22 juil. 2007 à 12:20
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
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
22 juil. 2007 à 13:21
22 juil. 2007 à 13:21
Tu ne veux que les lignes ayant un "fromComp toComp", ou bien toutes les lignes aussi comme dans ton 1er post ???
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
22 juil. 2007 à 13:35
22 juil. 2007 à 13:35
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
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
22 juil. 2007 à 13:41
22 juil. 2007 à 13:41
Et le critère de numérotation s'appuie sur quelle référence ? (01, 02, 03, etc.)
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
22 juil. 2007 à 13:56
22 juil. 2007 à 13:56
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
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
22 juil. 2007 à 14:24
22 juil. 2007 à 14:24
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)
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
22 juil. 2007 à 14:53
22 juil. 2007 à 14:53
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
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
22 juil. 2007 à 15:45
22 juil. 2007 à 15:45
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
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
22 juil. 2007 à 15:54
22 juil. 2007 à 15:54
remplacer ++comp - 1 par x=++comp - 1 ? x : ""
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
22 juil. 2007 à 16:00
22 juil. 2007 à 16:00
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 .
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
22 juil. 2007 à 16:22
22 juil. 2007 à 16:22
Avant le printf:
et dans le printf remplacer ++comp - 1 par s
ceci dit, ++comp -1 == comp++
pour faire propre mettre au début BEGIN{comp=0} ;
x=++comp - 1 ; if(x) s=sprintf("%d",x) else s="";
et dans le printf remplacer ++comp - 1 par s
ceci dit, ++comp -1 == comp++
pour faire propre mettre au début BEGIN{comp=0} ;
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
>
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
23 juil. 2007 à 07:06
23 juil. 2007 à 07:06
bonjour
Peut tu faire le changement directement dans le script car je n'ai pas réussi (débutant ),
merci d'avance
Peut tu faire le changement directement dans le script car je n'ai pas réussi (débutant ),
merci d'avance
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
29 juil. 2007 à 13:59
29 juil. 2007 à 13:59
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 ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
29 juil. 2007 à 14:23
29 juil. 2007 à 14:23
Salut,
Euh...! j'ai pas tout compris là :-\
Tu peux développer un peu s'il te plaît ?
Euh...! j'ai pas tout compris là :-\
Tu peux développer un peu s'il te plaît ?
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
29 juil. 2007 à 14:56
29 juil. 2007 à 14:56
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," !","~~~~~~~~~~~~~~~",
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
30 juil. 2007 à 07:52
30 juil. 2007 à 07:52
Une petite aide serait la bienvenue , please
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
30 juil. 2007 à 08:00
30 juil. 2007 à 08:00
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 ;-(
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
31 juil. 2007 à 07:56
31 juil. 2007 à 07:56
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 ...
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
31 juil. 2007 à 10:11
31 juil. 2007 à 10:11
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 ...
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
31 juil. 2007 à 16:01
31 juil. 2007 à 16:01
On peut définir plusieur séparateurs dans awk : awk -F"[ ;]"
<espace> et ; sont séparateurs.
<espace> et ; sont séparateurs.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
1 août 2007 à 08:55
1 août 2007 à 08:55
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 ;-))
Karamurat
Messages postés
43
Date d'inscription
jeudi 12 juillet 2007
Statut
Membre
Dernière intervention
4 janvier 2011
2
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
1 août 2007 à 14:28
1 août 2007 à 14:28
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 ,