Supprimer X octets dans un fichier - Shell/Batch - Programmation
Marsh Posté le 12-02-2006 à 01:55:05
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.
Marsh Posté le 12-02-2006 à 02:01:15
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.
Marsh Posté le 12-02-2006 à 02:13:57
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` |
Marsh Posté le 12-02-2006 à 02:28:22
ok je te remercie beaucoup, je pense avoir compris, je m'en sortirai avec ton exemple.
merci encore.
Marsh Posté le 12-02-2006 à 00:54:07
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...
Avez-vous une idée ?
Cordialement.