modifier un fichier texte automatiquement

modifier un fichier texte automatiquement - Divers - Programmation

Marsh Posté le 26-06-2023 à 09:31:15    

Bonjour tout le monde
 
Voila j'ai un appareil de mesure qui me créé un fichier de coordonnée sous cette forme :
 

Code :
  1. "X:m","Y:m","Z:m"
  2. "0.000","0.000","0.000"
  3. "8.082","0.000","-0.012"
  4. "8.104","8.387","0.060"
  5. "8.294","20.147","0.030"
  6. "0.199","20.323","0.072"
  7. "-2.002","28.497","-0.636"
  8. "-2.265","40.022","-0.616"
  9. "-1.304","47.314","-0.538"
  10. "2.354","53.301","-0.386"
  11. "8.589","57.368","-0.156"
  12. "17.100","59.433","0.062"
  13. "24.920","61.095","-0.043"
  14. "27.810","54.171","1.697"
  15. "28.189","51.304","2.533"
  16. "34.422","48.104","3.545"
  17. "35.987","46.130","3.633"
  18. "36.087","44.235","3.555"
  19. "34.080","42.695","3.626"
  20. "31.401","40.032","3.536"
  21. "33.326","38.816","3.733"
  22. "37.707","38.495","4.022"
  23. "38.895","35.816","4.004"
  24. "38.135","33.291","3.903"
  25. "37.825","31.565","3.795"
  26. "35.884","30.357","3.633"
  27. "34.430","28.264","3.656"
  28. "37.983","25.245","4.881"
  29. "42.440","25.274","6.584"
  30. "41.432","22.695","6.640"
  31. "44.287","23.561","8.261"
  32. "46.006","20.939","8.392"
  33. "45.042","15.568","8.343"
  34. "43.084","11.215","8.285"
  35. "42.311","7.264","8.071"
  36. "45.958","2.960","8.867"
  37. "46.500","-1.037","8.951"
  38. "44.431","-4.836","8.649"
  39. "44.557","-9.044","8.784"
  40. "45.974","-14.977","8.790"
  41. "47.396","-22.784","8.596"
  42. "47.417","-29.985","8.521"
  43. "41.918","-32.049","7.378"
  44. "39.937","-33.474","6.916"
  45. "35.980","-34.267","6.602"
  46. "30.692","-35.389","5.766"
  47. "27.865","-36.095","4.492"
  48. "24.653","-36.950","2.747"
  49. "21.918","-39.223","2.057"
  50. "16.617","-43.186","1.220"
  51. "9.659","-47.392","-0.679"
  52. "7.164","-42.227","-0.329"
  53. "-0.470","-41.237","-0.828"
  54. "-1.986","-39.875","-0.846"
  55. "-5.680","-32.842","-0.927"
  56. "-8.631","-28.215","-1.188"
  57. "-4.926","-20.895","-0.624"
  58. "-3.866","-14.902","-0.429"
  59. "-3.592","-9.359","-0.726"
  60. "-1.804","-4.939","-0.783"
  61. "1.138","-2.901","-0.717"
  62. "0.151","-0.238","-0.526"
  63. "0.000","0.000","0.000"


 
Et mon logiciel a besoin que le fichier soit sous ce format :
 

Code :
  1. 1,0.000,0.000,0.000
  2. 2,8.082,0.000,-0.012
  3. 3,8.104,8.387,0.060
  4. 4,8.294,20.147,0.030
  5. 5,0.199,20.323,0.072
  6. 6,-2.002,28.497,-0.636
  7. 7,-2.265,40.022,-0.616
  8. 8,-1.304,47.314,-0.538
  9. 9,2.354,53.301,-0.386
  10. 10,8.589,57.368,-0.156
  11. 11,17.100,59.433,0.062
  12. 12,24.920,61.095,-0.043
  13. 13,27.810,54.171,1.697
  14. 14,28.189,51.304,2.533
  15. 15,34.422,48.104,3.545
  16. 16,35.987,46.130,3.633
  17. 17,36.087,44.235,3.555
  18. 18,34.080,42.695,3.626
  19. 19,31.401,40.032,3.536
  20. 20,33.326,38.816,3.733
  21. 21,37.707,38.495,4.022
  22. 22,38.895,35.816,4.004
  23. 23,38.135,33.291,3.903
  24. 24,37.825,31.565,3.795
  25. 25,35.884,30.357,3.633
  26. 26,34.430,28.264,3.656
  27. 27,37.983,25.245,4.881
  28. 28,42.440,25.274,6.584
  29. 29,41.432,22.695,6.640
  30. 30,44.287,23.561,8.261
  31. 31,46.006,20.939,8.392
  32. 32,45.042,15.568,8.343
  33. 33,43.084,11.215,8.285
  34. 34,42.311,7.264,8.071
  35. 35,45.958,2.960,8.867
  36. 36,46.500,-1.037,8.951
  37. 37,44.431,-4.836,8.649
  38. 38,44.557,-9.044,8.784
  39. 39,45.974,-14.977,8.790
  40. 40,47.396,-22.784,8.596
  41. 41,47.417,-29.985,8.521
  42. 42,41.918,-32.049,7.378
  43. 43,39.937,-33.474,6.916
  44. 44,35.980,-34.267,6.602
  45. 45,30.692,-35.389,5.766
  46. 46,27.865,-36.095,4.492
  47. 47,24.653,-36.950,2.747
  48. 48,21.918,-39.223,2.057
  49. 49,16.617,-43.186,1.220
  50. 50,9.659,-47.392,-0.679
  51. 51,7.164,-42.227,-0.329
  52. 52,-0.470,-41.237,-0.828
  53. 53,-1.986,-39.875,-0.846
  54. 54,-5.680,-32.842,-0.927
  55. 55,-8.631,-28.215,-1.188
  56. 56,-4.926,-20.895,-0.624
  57. 57,-3.866,-14.902,-0.429
  58. 58,-3.592,-9.359,-0.726
  59. 59,-1.804,-4.939,-0.783
  60. 60,1.138,-2.901,-0.717
  61. 61,0.151,-0.238,-0.526
  62. 62,0.000,0.000,0.000


 
En gros je supprime la première ligne systématiquement, je supprime tout les " et je dois ajouter le numéro de la ligne avec un virgule au début de chaque coordonnée.
 
Est ce que vous auriez une solution? Un fichier .bat ? le problème c'est que mon fichier change de nom à chaque fois. Le nombre de ligne est inconnue.  
 
Merci d'avance pour vos idées.


---------------
Mon feedback
Reply

Marsh Posté le 26-06-2023 à 09:31:15   

Reply

Marsh Posté le 26-06-2023 à 11:12:21    

Si tu es sous linux:
 
https://www.cyberciti.biz/faq/how-t [...] nix-shell/
 
Donc:
 
sed 's/"//g' input.file > output.file
 
Et pour la suppression:
sed '1d' input.file
 
 
Sous windows:
more +1 input.file > output.file
 
Pour la suppression de la premiere ligne.
 
Et pour le remplacement ca semble plus compliqué mais possible:
https://stackoverflow.com/questions [...] rogramming
 

Reply

Marsh Posté le 26-06-2023 à 11:14:55    

C'est pour une utilisation sous windows.  
 
Par contre je ne comprend absolument pas ce que tu veux m'expliquer avec ton "more +1 input.file > output.file"
 
En tout cas merci pour ta réponse


Message édité par gortex3D le 26-06-2023 à 11:15:07

---------------
Mon feedback
Reply

Marsh Posté le 26-06-2023 à 11:23:11    

C'est ce que tu dois mettre en bash pour faire "enlever la premiere ligne" pour windows !
 
Donc more +1 input.txt > output.txt
 
Output sera le meme fichier que input sans la premiere ligne.

Reply

Marsh Posté le 05-07-2023 à 11:50:42    

Tu y es arrivé ?  Je crois pouvoir te le faire en java si besoin (faudra installer le dernier java jdk).  C'est des gros fichiers ?  Et beaucoup de fichiers ?


Message édité par Lt Ripley le 05-07-2023 à 11:51:33

---------------
Mes apps  |  Viens coder  |  Mon topal de vente
Reply

Marsh Posté le 05-07-2023 à 11:56:15    

Alors pour le moment non. J'ai fait quelques tests mais je ne suis pas très doué en programmation donc pas concluant. J'ai commencé a regarder quelques tutos pour voir comment écrire le début du fichier.  
 
Alors non ce n'est pas de gros fichiers a mon avis les plus gros auront dans les 100 -200 lignes et le volumes serait de 5-10 fichiers par semaine
 


---------------
Mon feedback
Reply

Marsh Posté le 05-07-2023 à 12:34:30    

gortex3D a écrit :

En gros je supprime la première ligne systématiquement, je supprime tout les " et je dois ajouter le numéro de la ligne avec un virgule au début de chaque coordonnée.

Tu as ça a faire dessus, rien d'autre ?  Que je structure mon programme correctement.


Message édité par Lt Ripley le 05-07-2023 à 12:34:51

---------------
Mes apps  |  Viens coder  |  Mon topal de vente
Reply

Marsh Posté le 05-07-2023 à 14:16:06    

normalement oui. Dans mon premier message le premier contenu est vraiment ce que j'ai de mon appareil de mesure et le deuxième c'est après modification manuel. les numéros + , ont été mis à la main. les " ont été supprimé sous blocnote avec un remplace et la première ligne à la main également. Ce sont les seuls modifications qui ont été faites.  
 
Merci beaucoup pour ton aide


---------------
Mon feedback
Reply

Marsh Posté le 05-07-2023 à 14:47:24    

Bon j'ai presque fini, j'obtiens ça c'est bon ? (faut que je vire la ligne vide a la fin)

 

T'as même une interface graphique :D

 

https://i.imgur.com/yLbJnAX.png

 
Code :
  1. 1,0.000,0.000,0.000
  2. 2,8.082,0.000,-0.012
  3. 3,8.104,8.387,0.060
  4. 4,8.294,20.147,0.030
  5. 5,0.199,20.323,0.072
  6. 6,-2.002,28.497,-0.636
  7. 7,-2.265,40.022,-0.616
  8. 8,-1.304,47.314,-0.538
  9. 9,2.354,53.301,-0.386
  10. 10,8.589,57.368,-0.156
  11. 11,17.100,59.433,0.062
  12. 12,24.920,61.095,-0.043
  13. 13,27.810,54.171,1.697
  14. 14,28.189,51.304,2.533
  15. 15,34.422,48.104,3.545
  16. 16,35.987,46.130,3.633
  17. 17,36.087,44.235,3.555
  18. 18,34.080,42.695,3.626
  19. 19,31.401,40.032,3.536
  20. 20,33.326,38.816,3.733
  21. 21,37.707,38.495,4.022
  22. 22,38.895,35.816,4.004
  23. 23,38.135,33.291,3.903
  24. 24,37.825,31.565,3.795
  25. 25,35.884,30.357,3.633
  26. 26,34.430,28.264,3.656
  27. 27,37.983,25.245,4.881
  28. 28,42.440,25.274,6.584
  29. 29,41.432,22.695,6.640
  30. 30,44.287,23.561,8.261
  31. 31,46.006,20.939,8.392
  32. 32,45.042,15.568,8.343
  33. 33,43.084,11.215,8.285
  34. 34,42.311,7.264,8.071
  35. 35,45.958,2.960,8.867
  36. 36,46.500,-1.037,8.951
  37. 37,44.431,-4.836,8.649
  38. 38,44.557,-9.044,8.784
  39. 39,45.974,-14.977,8.790
  40. 40,47.396,-22.784,8.596
  41. 41,47.417,-29.985,8.521
  42. 42,41.918,-32.049,7.378
  43. 43,39.937,-33.474,6.916
  44. 44,35.980,-34.267,6.602
  45. 45,30.692,-35.389,5.766
  46. 46,27.865,-36.095,4.492
  47. 47,24.653,-36.950,2.747
  48. 48,21.918,-39.223,2.057
  49. 49,16.617,-43.186,1.220
  50. 50,9.659,-47.392,-0.679
  51. 51,7.164,-42.227,-0.329
  52. 52,-0.470,-41.237,-0.828
  53. 53,-1.986,-39.875,-0.846
  54. 54,-5.680,-32.842,-0.927
  55. 55,-8.631,-28.215,-1.188
  56. 56,-4.926,-20.895,-0.624
  57. 57,-3.866,-14.902,-0.429
  58. 58,-3.592,-9.359,-0.726
  59. 59,-1.804,-4.939,-0.783
  60. 60,1.138,-2.901,-0.717
  61. 61,0.151,-0.238,-0.526
  62. 62,0.000,0.000,0.000


Message édité par Lt Ripley le 05-07-2023 à 14:48:11

---------------
Mes apps  |  Viens coder  |  Mon topal de vente
Reply

Marsh Posté le 05-07-2023 à 15:04:47    

Ok je viens de voir ton message.  Je fignole un peu et je te donne l'executable .jar


---------------
Mes apps  |  Viens coder  |  Mon topal de vente
Reply

Marsh Posté le 05-07-2023 à 15:04:47   

Reply

Marsh Posté le 05-07-2023 à 15:29:48    

Voici :  https://drive.google.com/file/d/17s [...] sp=sharing
 
Fais des essais pour contrôler d'abord !
 
Installe préalablement le JDK : https://download.oracle.com/java/20 [...] 64_bin.exe


---------------
Mes apps  |  Viens coder  |  Mon topal de vente
Reply

Marsh Posté le 05-07-2023 à 21:28:25    

Un énorme merci. Je vais faire des tests vendredi avec.


---------------
Mon feedback
Reply

Marsh Posté le 06-07-2023 à 09:33:08    

C'est super sympa sur le principe, mais je trouve que c'est pas trop le principe du forum, surtout si tu ne partages pas les sources du bousin. Ne serait-ce que par transparence pour celui qui va lancer ça sans te connaître !
 
Dans ton cas t'es un ancien du forum donc on n'a pas trop à s'inquiéter de tes bonnes intentions, mais j'imagine la boucherie si on commençait à avoir un débarquement de gens qui se mettaient à poster des exécutables susceptible de contenir tout et n'importe quoi soit disant pour "aider les gens" alors je préfère aborder la question :whistle:


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 06-07-2023 à 09:46:45    

Oui j'y ai pensé, mettre le code source mais dans l'absolu j'aurais pu faire un .jar vicieux et donner un code source tout propre...
 
Mais je veux bien donner le code source bien sûr.  Comment je fais TotalRecall pour le mettre a dispo ?


---------------
Mes apps  |  Viens coder  |  Mon topal de vente
Reply

Marsh Posté le 06-07-2023 à 09:52:35    

Oui c'est clair, mais c'est toujours un premier pas dans la bonne direction, et au moins rien n'empêche celui qui demande de recompiler sa propre version s'il le souhaite (partant du principe qu'on est sur la catégorie Programmation d'un forum informatique c'est pas délirant).
 
Bah pourquoi pas en zip sur le même drive (si tu veux faire au plus simple pour toi) ?


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 06-07-2023 à 10:03:21    

D'accord, merci totalRecall
 
Le zip : https://drive.google.com/file/d/1s3 [...] sp=sharing
 
(@gortex : faut aller dans src puis dérouler jusque trouver Gortex3D.java pour voir la beauté de mon code :D (tu peux l'ouvrir avec un blocnote même si les IDE c'est 1000 fois mieux))
 
https://i.imgur.com/LUgTPp8.png


---------------
Mes apps  |  Viens coder  |  Mon topal de vente
Reply

Marsh Posté le 07-07-2023 à 16:03:54    

Ah yes, merci, je le dl de suite. Je ne connais pas java mais je vais aller voir le code.
 
Malheureusement je n'ai pas eu le temps de faire de test aujourd'hui. des petits soucis qui font que j'ai du quitter mon poste de travail.

Message cité 1 fois
Message édité par gortex3D le 07-07-2023 à 16:10:16

---------------
Mon feedback
Reply

Marsh Posté le 09-07-2023 à 14:43:15    

Ce serait pas plus simple avec Powershell ?

Reply

Marsh Posté le 09-07-2023 à 14:51:03    

C'est tout à fait possible.
En tant que feignasse qui fait du PowerShell 3 fois par an, j'ai demandé à un ami virtuel :


Je voudrais un script auquel je peux passer un nom de fichier, qu'il lise chaque ligne de ce fichier, qu'il en enlève tous les guillemets, et que pour chaque ligne il vienne inscrire devant son numéro en comptant à partir de 1.
Et qu'à la fin du traitement il sauvegarde le résultat dans un nouveau fichier avec le même nom que l'original, avec le suffixe "_transformé" dans le nom.

 

Il a répondu :

Code :
  1. param (
  2.     [Parameter(Mandatory=$true)]
  3.     [string]$filename
  4. )
  5. # Création du nom du fichier de sortie avec le suffixe "_transformé"
  6. $transformedFileName = [System.IO.Path]::GetFileNameWithoutExtension($filename) + "_transformé" + [System.IO.Path]::GetExtension($filename)
  7. # Lecture du contenu du fichier d'entrée
  8. $lines = Get-Content $filename
  9. # Tableau pour stocker les lignes transformées
  10. $transformedLines = @()
  11. # Transformation des lignes
  12. for ($i = 0; $i -lt $lines.Count; $i++) {
  13.     $line = $lines[$i]
  14.     # Suppression des guillemets de la ligne
  15.     $transformedLine = $line -replace '"', ''
  16.     # Ajout du numéro de ligne devant la ligne transformée
  17.     $transformedLine = ($i + 1).ToString() + ' ' + $transformedLine
  18.     # Ajout de la ligne transformée au tableau
  19.     $transformedLines += $transformedLine
  20. }
  21. # Écriture du contenu transformé dans le fichier de sortie
  22. $transformedLines | Out-File $transformedFileName
  23. Write-Host "Le fichier $filename a été transformé avec succès. Le résultat a été enregistré dans $transformedFileName."



Pour utiliser ce script, vous pouvez l'enregistrer dans un fichier avec une extension .ps1, par exemple transform-file.ps1. Ensuite, vous pouvez exécuter le script en ouvrant une session PowerShell et en utilisant la commande suivante :

 

powershell

 

.\transform-file.ps1 -filename "chemin_vers_le_fichier\mon_fichier.txt"

 

Assurez-vous de remplacer "chemin_vers_le_fichier\mon_fichier.txt" par le chemin d'accès réel de votre fichier à transformer. Le script lira le contenu du fichier, supprimera les guillemets et ajoutera le numéro de ligne devant chaque ligne. Le fichier transformé sera enregistré avec le même nom, suivi du suffixe "_transformé".

 

J'ai oublié de lui dire sous quelle forme on veut le numéro de ligne devant, mais l'idée est là (non j'ai pas testé :d)


Message édité par TotalRecall le 09-07-2023 à 14:51:24

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 09-07-2023 à 20:26:47    

Ah pas mal, il manque juste l'effacement de la 1ère ligne  ;)  
Quel est cet ami virtuel ?

Reply

Marsh Posté le 09-07-2023 à 21:59:37    

ChatGPT ! Si tu veux, tu peux reprendre mon prompt en y ajoutant les ajustements qu'il te faut, et lui redemander et créant un compte gratuit :p.
Mais pour l'histoire de la ligne à zapper, il doit suffire de modifier le for pour compter à partir de 1 au lieu de 0.


Message édité par TotalRecall le 09-07-2023 à 22:00:26

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 13-07-2023 à 15:11:46    

gortex3D a écrit :

Ah yes, merci, je le dl de suite. Je ne connais pas java mais je vais aller voir le code.
 
Malheureusement je n'ai pas eu le temps de faire de test aujourd'hui. des petits soucis qui font que j'ai du quitter mon poste de travail.


Alors il marche bien mon programme ? [:parag0n]


---------------
Mes apps  |  Viens coder  |  Mon topal de vente
Reply

Marsh Posté le 14-07-2023 à 14:56:58    

Un one-liner linux suffit :
cat {nom-du-fichier} | tr -d '"XYZ:m' | tr ','   '  ' | grep '\S'
(le code de joce bouffe les blancs, mais il y en a un entre les deux ' à la fin de tr ','   '  '  
A+,


Message édité par gilou le 14-07-2023 à 15:01:56

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 14-07-2023 à 14:58:28    

Facile, au niveau des prérequis il faut juste prévoir quelques mois pour migrer sous Linux avant de pouvoir utiliser la ligne quoi :d

 

edit : bon je trolle, je sais qu'on peut installer un shell linux sous Windows :o
edit² : écrasage du gilou :o

Message cité 1 fois
Message édité par TotalRecall le 14-07-2023 à 15:09:09

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 14-07-2023 à 15:01:27    

TotalRecall a écrit :

Facile, au niveau des prérequis il faut prévoir avant quelques mois pour migrer sous Linux quoi :d


Tu installes (comme tout le monde) MSYS2 en ucrt64 et ça roule. [:julm3]  
et sinon, sous powershell, tu fais wsl tr  [:painkiller]  
A+,

Message cité 1 fois
Message édité par gilou le 14-07-2023 à 15:05:05

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 14-07-2023 à 15:04:41    

Pourquoi tu as édité mon post :??:


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 14-07-2023 à 15:06:30    

TotalRecall a écrit :

Pourquoi tu as édité mon post :??:

Par erreur, je croyais avoir cliqué sur répondre/citer
Normalement, je l'ai rétabli dans l'état ou je l'avais trouvé.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 14-07-2023 à 15:08:38    

En fait non, du coup tu avais écrasé mon propre édit :d. Pas grave j'ai remis.
Mais je comprends l'accident :o


Message édité par TotalRecall le 14-07-2023 à 15:08:50

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 14-07-2023 à 15:14:18    

D'ailleurs, je n'ai testé le one-liner que avec MSYS2 :D
(je l'utilise pour faire tourner des scripts bash historiques (et pourris) de milliers de lignes que je dois maintenir sur des VMs windows au taff  [:kosmos] )
 
A+,


Message édité par gilou le 14-07-2023 à 15:14:49

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 14-07-2023 à 15:21:19    

gilou a écrit :

et sinon, sous powershell, tu fais wsl tr  [:painkiller]  
A+,


C'est à dire ? Tu pourrais donner le code complet pour Powershell ?

Reply

Marsh Posté le 14-07-2023 à 15:35:41    

Je fais pas de powershell, mais je peux te répondre avec une commande CMD :
Si tu as installé wsl sur ton windows,  
type {nom-du-fichier} | wsl  tr -d '"XYZ:m' | tr ','   '  ' | grep '\S'
fait le taff.
(et wsl cat {nom-du-fichier} | wsl  tr -d '"XYZ:m' | tr ','   '  ' | grep '\S' aussi)
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 14-07-2023 à 16:21:16    

C'est bien la peine de faire du powershell pour lancer du linux dedans :na:
:d


Message édité par TotalRecall le 14-07-2023 à 16:21:26

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 14-07-2023 à 17:39:37    

C'est bien pour cela que j'avais mis un smiley "c'est, euh, renversant" :D
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed