Forum Clubic

[résolu] fichier texte corrompu - comment réaliser un script automatique

bonjour,

j’ai copié un fichier .txt sur une clé usb et je me suis aperçu en le réouvrant plus tard qu’il avait été corrompu dans le transport :
en effet, entre chaque caractère s’est inséré un espace et entre chaque ligne s’est insérée une ligne vide…

ce n’est au fond pas si grave, puisqu’il me suffit de faire machinalement “SUPPR” puis “flèche droite” sur mon clavier jusqu’à arriver à la fin du document. Puis je n’aurais qu’à faire la même chose mais cette fois avec “flèche bas” pour retrouver mon document original…

Seulement, il y a environ 6000 lignes et en moyenne 20 caractères par ligne (dans le document original)…

N’y aurait-il pas un moyen de faire cette correction automatiquement en beaucoup moins de temps?

sur google, des recherches “script+supprimer automatiquement un caractère sur deux” ou encore “fichier corrompu+effacer+automatique” ne m’ont pas beaucoup renseigné…

(je ne m’y connais pas du tout en programmation, et je ne sais même pas si j’ai posté ce message au bon endroit.)

Je suis preneur de n’importe quel conseil :
¤un lien vers un post similaire (problème résolu de préférence)
¤poster le message ailleurs
¤chercher avec d’autres mots clés sur google…

d’avance merci !

M

Est-ce que les espaces entre les mots ont aussi été remplacés par deux espaces consécutifs ?

oui, il y a trois espaces consécutifs pour un espace original…

du coup j’ai pensé à une solution : utiliser la commande “Remplacer” pour changer " " (3 espaces) par “QW”, puis ensuite effacer tous les espaces restants (remplacer " " par “”) et enfin remplacer les “QW” par " ", mais ça fait trop de calcul pour le bloc notes… je vais peut-être le faire sous linux avec emacs, ça devrait marcher…
après il ne reste plus qu’à régler le problème des lignes, mais ça, ça peut se faire à la main en un temps fini.

en attendant, j’ai comme l’impression que c’est une solution assez sale et qu’il doit y avoir plus simple, plus rapide et moins gourmand en calculs.

Ben tu peux faire la même chose dans un langage de prog avec les expressions régulières (essaie de remplacer \n\n par \n pour voir si il t’efface pas les espaces en trop) mais le problème est assez simple pour qu’un éditeur de texte suffise.

n’y aurait il pas eu un problème d’encodage du fichier, genre encodage utf8 ou autre

as tu essayé d’ouvrir le fichier avec wordpad?

1- Avec quoi as-tu écrit ton fichier sur la clé ?
Ce n’est pas un problème de police ?

2- Comme c’est du texte, essaie d’ouvrir avec word ou excel ou quelque chose de ce genre, et tu n’auras sans doute pas de mal à appliquer la solution que tu préconises plus haut

Salut,

Avec "sed" sous GNU/Linux (mais il existe aussi pour Windows (Sed pour Windows) tu devrais y arriver assez facilement :

sed -i.bak 's/\(.\) /\1/g;n;d' ton_fichier

:wink:

Un détail de l’expression peut-être ? :jap:

-i.bak : sauvegarde le fichier d’origine en le renommant avec l’extension “.bak”
: quote de début
s : commande de substitution
/ : délimiteur (pourrait tout aussi bien être # ou % ou |, etc…)
\(.\) : motif, on recherche un caractère quelconque suivi d’un espace (pas trop visible là :frowning: )
/ : délimiteur
\1 : remplacement du motif par lui même (sans l’espace qui est en dehors des parenthèses)
/ : délimiteur
g : demande d’appliquer l’expression à la ligne entière (pas qu’au 1er motif rencontré)
; : séparateur de commande
n;d : supprime les doubles lignes blanches
: quote de fin
ton_fichier : le fichier

:wink:

Merci bien ! :super:

J’ai essayé de trafiquer le fichier texte en l’ouvrant avec divers éditeurs de texte, mais le problème des caractères en trop a persisté…

d’ailleurs, si j’accuse ma clé USB (et non l’encodage du texte) c’est parce que ce n’est pas la première fois que j’ai l’impression que ce qui en sort n’est pas ce que j’y avais mis, parce qu’elle a souvent besoin d’être formatée parce qu’elle a des clusters défectueux… mais ça peut venir aussi de l’encodage ou du téléchargement (je m’étais envoyé le fichier par internet à la fac avant de le mettre sur la clé)…

bref, merci en tous cas pour toutes vos solutions ! Le problème est résolu.
Le programme SED était plus ou moins ce que je cherchais sur google sans succès.

à plus !