Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1490 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Supprimer X octets dans un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Supprimer X octets dans un fichier

n°1303629
Inekman
Posté le 12-02-2006 à 00:54:07  profilanswer
 

Bonjour,
 
Je cherche désespérement une manière de supprimer X octets dans un fichier donné à l'aide des commandes qui nous sont mises à dispositions sous Linux mais je ne sais pas quoi prendre ni comment.
 
Je me mèle les pinceaux avec cut, cat, head, tail... :sweat:  
 
Avez-vous une idée ?
 
Cordialement.

mood
Publicité
Posté le 12-02-2006 à 00:54:07  profilanswer
 

n°1303636
olivthill
Posté le 12-02-2006 à 01:55:05  profilanswer
 

L'idée générale, est de créer un nouveau fichier avec tous les octets sauf ceux qu'il faut supprimer, puis d'éliminer l'ancien fichier, et de renommer le nouveau fichier avec le nom de l'ancien fichier.
 
Ensuite, cela depend des cas.
Si les octets à supprimer sont ceux de la fin, alors il ne faut garder que ceux du début, de la tête, donc faire head.
Si les octets à supprimer sont en tête, il faut garde les octets de la fin, donc faire un tail.
Si les octets à supprimer sont au millieu, alors faire head et tail.
 
cat et cut n'ont pas vraiment d'intérêt pour ce problème-là.
 
Mais plutôt que head et tail, le plus simple est sans doute awk. Le seul petit inconvnient de awk est qu'il faut faire l'effort d'apprendre à s'en servir.

n°1303638
Inekman
Posté le 12-02-2006 à 02:01:15  profilanswer
 

Moi j'aurais besoin de supprimer 30 octets en tête d'un fichier par exemple, donc ça serait tail d'après ce que tu dis.
 
Peux-tu me donner un exemple pour le cas de 30 octets s'il te plait.

n°1303641
olivthill
Posté le 12-02-2006 à 02:13:57  profilanswer
 

Selon les shells Unix, l'instruction tail peut avoir des variantes, et d'autres part, je ne dispose pas d'Unix chez moi, donc voici une solution que je n'ai pas testée, et qui n'est peut-être pas optimale.
 
Habituellement tail peut accepter plusieurs paramètres dont un qui est la taille en octets. Donc, on fait

  tail -n$lg fic1.txt >fic1.tmp

Cela dit il manque une ligne au début pour connaître la valeur de la longueur à conserver (le $lg dans l'exemple).
Pour calculer cette longueur, on peut utiliser word count (wc) pour obtenir la taille totale du fichier et retrancher 30.

   lg=`wc -c <fic1.txt`
   lg=`expr $lg - 30`
   tail -n$lg fic1.txt >fic1.tmp
   rm fic1.txt
   mv fic1.tmp fic1.txt


Message édité par olivthill le 12-02-2006 à 02:15:32
n°1303646
Inekman
Posté le 12-02-2006 à 02:28:22  profilanswer
 

ok je te remercie beaucoup, je pense avoir compris, je m'en sortirai avec ton exemple.
 
merci encore.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Supprimer X octets dans un fichier

 

Sujets relatifs
Récuperer l'url du fichier uploader ?perl - lecture d'un fichier par blocks en partant de la fin
Listage de fichier ls -l avec JavaMise a jour de fichier sur FTP
[VBScript] [RESOLU] erreur lors de la suppression de fichiermodification fichier txt
VBA Excel 2002 - AS400 chercher un fichierSupprimer une instance de classe
Probleme bisard de fichier batch au démarrageVBA - Macro supprimer ligne
Plus de sujets relatifs à : Supprimer X octets dans un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR