Script shell qui format mun fichier [Résolu/Fermé]

Signaler
-
 mlkndiaye -
Bonjour,

J'ai de gros soucie pour formater mon fichier en utlisant un script shell:
Mon fichier de depart est :
cat fich 1:
85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|

je souhaite avoir le resultat suivant:
- la longueur de chaque enregitremant du fichier formaté ne doit pas depaser 200 caracteres.
- suivant les cas (030,050) inserer dans l'enr les information (001 AZERTY) ou (050 QUERTY)

Select Case
Case "030"
vProd = "001"
vLGrp = "AZERTY"
Case "050"
vProd = "003"
vLGrp = "QUERTY"
Case Else

fichier apres formatage

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

ceci est un exemple mais le format est beaucoups complexe.
je souhaite le script soit tres explicite et commente pour que je puisse l'adapter.



1 réponse

Messages postés
29363
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
26 octobre 2020
6 954
Personnellement je n'ai pas compris comment tu passais du premier format au second format.

Dans l'idée il va falloir extraire du fichier de départ les morceaux qui t'intéressent en le lisant ligne par ligne et en saucissonnant cette chaîne avec la commande cut (délimiteur -d'|'). À toi ensuite de construire une chaîne qui va te permettre de générer la ou les lignes correspondantes dans le fichier de sortie.

Une fois la chaîne construite, pour l'écrire dans un fichier il suffit d'utiliser echo et l'opérateur >>.

Si ce que je te dis ne te parle pas, commence par lire un tutoriel sur les scripts shell.

Bonne chance
bjr
je pense que je vais simplifier ma demande:
soit fich1 fichier de depart
cat fich 1:
85884769370|030|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|
08235367539|050|02900|Bassirou |DILLO|13081967|LOUGA|17052010|

je souhaite avoir suivant le case (030,050) inserer dans l'enr les informations (001 AZERTY) ou (050 QUERTY)

Select Case
Case "030"
vProd = "001"
vLGrp = "AZERTY"
Case "050"
vProd = "003"
vLGrp = "QUERTY"
- - - - - on pourrait ajouter d'autre case
Case Else


fichier fich2 souhaite

85884769370|030|001|AZERTY|01800|Moussa |sarr|01061982|SAINT LOUIS|17052010|
08235367539|050|003|QUERTY|02900|Bassirou |DILLO|13081967|LOUGA|17052010|