Il faut que je trie mon fichier dans un shell
Colonne 11 à 20
Colonne 25 à 29
Colonne 1 à 2
Sauf les enregistrements de début et de fin
merci de votre aide
Il faut que je trie mon fichier dans un shell
Colonne 11 à 20
Colonne 25 à 29
Colonne 1 à 2
Sauf les enregistrements de début et de fin
merci de votre aide
C'est très sibyllin comme message.
Pourrais-tu mettre quelques enregistrements du fichier source et puis comme tu aimerais les avoir au final? Cela permettrait même de faire des tests...
Oui merci comme cela :
avant
10XXX20080808
215520JULES
225520JULES
325520JULES
213123CESAR
223123CESAR
313123CESAR
99000000784
après
10XXX20080808
213123CESAR
223123CESAR
313123CESAR
215520JULES
225520JULES
325520JULES
99000000784
Sans doute ne dois-je pas bien comprendre, mais tu parles de la colonne 29 alors qu'il n'y a que 11 caractères dans tes lignes.
Pourrais-tu soit mettre de vrais enregistrements, soit expliquer ce que tu appelles colonne?
Oui pardon j'ai simplifié pour anonymiser
j'ai mis dans le test
colonne 7 à 11
puis colonne 1 à 2
Le problème est de ne pas bouger la première et la dernière ligne
OK, j'ai compris maintenant. Voici comment je ferais:
1) copier le fichier source sans les premier et dernier enregistrements (fichier_in --> temp_1),
2) reformatter temp_1 pour faire facilement des tris, notamment en séparant les champs par un espace (par exemple), en créant un champ supplémentaire pour les deux chiffres sur lesquels il faut trier, en mettant le champ le plus important en premier (temp_1 --> temp_2),
3) trier suivant les deux champs, dont l'un en numérique (temp_2 --> temp_3),
4) reformatter en sens inverse (temp_3 --> temp_4),
5) remettre les premier et dernier enregistrements (temp_4 --> temp_5),
6) vérifier que tout est là, correctement trié, à la main (temp_5 --> fichier_out).
Pour faire tout ça, faut connaître sort et awk. Tu t'en sors ou tu as besoin d'aide?
Partager