Shell formatage fichier
Résolu/Fermé
A voir également:
- Shell formatage fichier
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Fichier iso - Guide
4 réponses
dubcek
Messages postés
18777
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 mars 2025
5 630
22 mai 2010 à 08:50
22 mai 2010 à 08:50
hello
il faudrait expliquer comment tu passes de
il faudrait expliquer comment tu passes de
cat fich 1: 85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010| 08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010| à cat fich2: 0000000000001CH5 85884769370 DN17052010 2000000017 010000 AZERTY1206N0YSAINT LOUIS ** 001 001800Mr. MOUSSA SARR 01061982 0000000000002CH5 08235367539 DN17052010 2000000017 010000 QUERTY1301N0YLOUGA ** 003 002900Mr. BASSIROU DILLO 13081967
dubcek
Messages postés
18777
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 mars 2025
5 630
Modifié par dubcek le 22/05/2010 à 15:28
Modifié par dubcek le 22/05/2010 à 15:28
pour la partie 1
$ cat a1 85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010| 08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010| $ $ cat a2 Select Case Case "030" vProd = "001" vLGrp = "AZERTY" Case "050" vProd = "003" vLGrp = "QUERTY" Case Else $ $ awk -F"|" 'NF< 3 && /^Case/ {split($0,x,"\"")} ; NF<3 && /vLGrp/ {split($0,t,"\"");z[x[2]]=t[2]};NF> 4 { print $0 z[$2] FS}' a2 a1 85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|AZERTY| 08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|QUERTY| $
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 mai 2010 à 17:01
22 mai 2010 à 17:01
Merci dorénavant de donner le maximum de détails en posant votre question !!!
Ça fait plusieurs posts où les gens se décarcassent pour rien (enfin façon de parler).
Ça fait plusieurs posts où les gens se décarcassent pour rien (enfin façon de parler).
dubcek
Messages postés
18777
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 mars 2025
5 630
23 mai 2010 à 08:50
23 mai 2010 à 08:50
$ cat a1 85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010| 08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010| $ $ cat a2 Select Case Case "030" vProd = "001" vLGrp = "AZERTY" Case "050" vProd = "003" vLGrp = "QUERTY" Case Else $ $ awk -F"|" '/^Case/ {split($0,x,"\"")} ;/^vLGrp/ {split($0,t,"\"");z[1,x[2]]=t[2]};/^vProd/ {split($0,t,"\"");z[2,x[2]]=t[2]};NF> 4 { print $0 z[1,$2] FS z[2,$2] FS}' a2 a1 85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|AZERTY|001| 08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|QUERTY|003| $
Bjr Dubcek,
Merci le script fonction tres bien.
je passe a l'etape suivante qui est la dernier:
Explication: Apres avoir injecte ces données ds une table puis mettre a jour la table, j'ai les données suivantes;
cat a3
85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|AZUR|001|0000||BN
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|VSEIMM|003|0000||FR
53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|VSPDEF|006|0000||SN
je souhaite formater ce fichier en maintenant la taille de chaque colonne comme il ete declare dans la table. Pour cet exemple (CHAR 11 ;CHAR 3; CHAR 5; CHAR 15; CHAR 15; CHAR 8; CHAR 20; CHAR 8; CHAR 6; CHAR 3; CHAR 4; CHAR 4; CHAR 2;)
d'ou le longueur de chaque enregistrement est 105.
cat rslt:
8588476937003001800Moussa sarr 01061982SAINT LOUIS 17052010AZUR 0010000 BN
0823536753905002900Bassirou DILLO 13081967LOUGA 17052010VSEIMM0030000 FR
5367744892006003500Fatou SILLA 27101965COTE IVOIRE 17052010VSPDEF0060000 SN
Merci le script fonction tres bien.
je passe a l'etape suivante qui est la dernier:
Explication: Apres avoir injecte ces données ds une table puis mettre a jour la table, j'ai les données suivantes;
cat a3
85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|AZUR|001|0000||BN
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|VSEIMM|003|0000||FR
53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|VSPDEF|006|0000||SN
je souhaite formater ce fichier en maintenant la taille de chaque colonne comme il ete declare dans la table. Pour cet exemple (CHAR 11 ;CHAR 3; CHAR 5; CHAR 15; CHAR 15; CHAR 8; CHAR 20; CHAR 8; CHAR 6; CHAR 3; CHAR 4; CHAR 4; CHAR 2;)
d'ou le longueur de chaque enregistrement est 105.
cat rslt:
8588476937003001800Moussa sarr 01061982SAINT LOUIS 17052010AZUR 0010000 BN
0823536753905002900Bassirou DILLO 13081967LOUGA 17052010VSEIMM0030000 FR
5367744892006003500Fatou SILLA 27101965COTE IVOIRE 17052010VSPDEF0060000 SN
dubcek
Messages postés
18777
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 mars 2025
5 630
23 mai 2010 à 10:46
23 mai 2010 à 10:46
Ca fait une longueur de 104
$ cat a3 85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|AZUR|001|0000||BN 08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|VSEIMM|003|0000||FR 53677448920|060|03500|Fatou |SILLA|27101965|COTE IVOIRE|17052010|VSPDEF|006|0000||SN $ $ awk -F"|" '{printf "%11s%3s%5s%15s%15s%8s%20s%8s%6s%3s%4s%4s%2s\n",$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13}' a3 8588476937003001800 Moussa sarr01061982 SAINT LOUIS17052010 AZUR0010000 BN 0823536753905002900 Bassirou DILLO13081967 LOUGA17052010VSEIMM0030000 FR 5367744892006003500 Fatou SILLA27101965 COTE IVOIRE17052010VSPDEF0060000 SN $
dubcek
Messages postés
18777
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 mars 2025
5 630
23 mai 2010 à 13:01
23 mai 2010 à 13:01
$ awk -F"|" '{printf "%11s%3s%5s%-15s%-15s%8s%-20s%8s%-6s%3s%4s%4s%-2s\n",$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13}' a3 8588476937003001800Moussa sarr 01061982SAINT LOUIS 17052010AZUR 0010000 BN 0823536753905002900Bassirou DILLO 13081967LOUGA 17052010VSEIMM0030000 FR 5367744892006003500Fatou SILLA 27101965COTE IVOIRE 17052010VSPDEF0060000 SN $
22 mai 2010 à 11:26
Ds un premier temps je souhaite que fich1 resoit les valeurs suivant le case.
cad:
85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|001|AZERTY|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|003|QUERTY|
Deuxiement dans le soucis d'avoir un fichier formaté fixer sur 200 caracteres par enregistement,
je charge mon fichier fich1 dans une table puis ajouter des données non variable.
NB: dans la table toutes les colonnes sont declare en CHAR, de ce faite ces données seront extrat sous le format. fich2.les espace vide sont des données null.