J'ai un fichier d'image disque corrompu (environ 27 Go) dans lequel, avant que tous les fichiers de l'image disque ne soient effacés, il n'y a pas eu d'erreur. \n caractères \r\r a été inséré. Je veux supprimer ces \r\r avant tout \n.
J'ai essayé avec awk :
awk '{ sub("\r\r$", ""); print }' mangled.raw > image.raw
Mais le fichier semble trop volumineux : "awk : run time error : out of memory"
J'ai aussi essayé avec sed :
sed 's/\r\r$//g' mangled.raw > image.raw
Mais ici le fichier de sortie semble incomplet : Il ne fait que 20 Go et la fin de mangled.raw contient beaucoup de caractères zéro alors que la fin de image.raw contient le contenu d'un fichier. D'une certaine manière, sed semble s'arrêter avant la fin.
Vous avez une idée de la façon de procéder ?
0 votes
Même si vous parvenez à faire fonctionner une commande sur un fichier de cette taille, vous êtes quasiment sûr de vous retrouver avec une image corrompue : à chaque endroit où il y avait initialement un ' \r\r\n ', le ' \r\r sera également supprimé. Dans les données binaires aléatoires, cette séquence est censée se produire une fois tous les 16 Mo, donc très likeky en 27GB.
0 votes
Dans mon fichier, chaque ' \n a été remplacé par \r\r\n '. Cela signifie qu'une séquence déjà existante de ' \r\r\n devient \r\r\r\r\n '. Un remplacement de ' \r\r\n par \n ' rétablit ainsi l'état initial.
0 votes
En effet, vous avez raison. Je me suis trompé.