je cherche depuis des heures sur le net des indices qui m'aideraient à
résoudre un problème à priori simple, mais qui devient incroyablement
épineux dans mon script bash.
Comment faire dans bash pour ne retirer que le dernier octet d'un
fichier binaire quelconque (fichier sans cohérence de données, un
fichier non-texte) sans recourir à des critères conditionnels ?
Je sais déjà que :
sed -e '$d' infile
permet de supprimer en entier la dernière ligne d'un fichier, mais je
cherche précisément à ne retirer qu'un et un seul octet placé en toute
fin de fichier.
accessoirement, connaîtriez-vous un NG sur lequel on traite de Bash
scripting en français ?
On Sun, 29 Oct 2006 22:41:29 +0100, Raphaël SEBAN wrote:
bonsoir,
Bonsoir
Comment faire dans bash pour ne retirer que le dernier octet d'un fichier binaire quelconque [...]
sed -e '$d' infile
Est-ce que sed est censé "fonctionner" avec les fichiers binaires?
accessoirement, connaîtriez-vous un NG sur lequel on traite de Bash scripting en français ?
fr.comp.os.unix, vers lequel j'ai déjà placé le suivi. Il suffit de s'y abonner
lhabert
Raphaël SEBAN :
Comment faire dans bash pour ne retirer que le dernier octet d'un fichier binaire quelconque (fichier sans cohérence de données, un fichier non-texte) sans recourir à des critères conditionnels ?
A=`cat fichier` ${A%?}
Sauf que je ne sais pas trop ce que ça donne sur un fichier binaire, ni si il y a des contraintes de taille.
Comment faire dans bash pour ne retirer que le dernier octet d'un
fichier binaire quelconque (fichier sans cohérence de données, un
fichier non-texte) sans recourir à des critères conditionnels ?
A=`cat fichier`
${A%?}
Sauf que je ne sais pas trop ce que ça donne sur un fichier binaire, ni si
il y a des contraintes de taille.
Comment faire dans bash pour ne retirer que le dernier octet d'un fichier binaire quelconque (fichier sans cohérence de données, un fichier non-texte) sans recourir à des critères conditionnels ?
A=`cat fichier` ${A%?}
Sauf que je ne sais pas trop ce que ça donne sur un fichier binaire, ni si il y a des contraintes de taille.
Comment faire dans bash pour ne retirer que le dernier octet d'un fichier binaire quelconque (fichier sans cohérence de données, un fichier non-texte) sans recourir à des critères conditionnels ?
A=`cat fichier; echo a` ${A%??}
Sauf que je ne sais pas trop ce que ça donne sur un fichier binaire, ni si il y a des contraintes de taille.
Comment faire dans bash pour ne retirer que le dernier octet d'un
fichier binaire quelconque (fichier sans cohérence de données, un
fichier non-texte) sans recourir à des critères conditionnels ?
A=`cat fichier; echo a`
${A%??}
Sauf que je ne sais pas trop ce que ça donne sur un fichier binaire, ni si
il y a des contraintes de taille.
Comment faire dans bash pour ne retirer que le dernier octet d'un fichier binaire quelconque (fichier sans cohérence de données, un fichier non-texte) sans recourir à des critères conditionnels ?
A=`cat fichier; echo a` ${A%??}
Sauf que je ne sais pas trop ce que ça donne sur un fichier binaire, ni si il y a des contraintes de taille.
je cherche depuis des heures sur le net des indices qui m'aideraient à résoudre un problème à priori simple, mais qui devient incroyablement épineux dans mon script bash.
Comment faire dans bash pour ne retirer que le dernier octet d'un fichier binaire quelconque (fichier sans cohérence de données, un fichier non-texte) sans recourir à des critères conditionnels ?
Je sais déjà que :
sed -e '$d' infile
permet de supprimer en entier la dernière ligne d'un fichier, mais je cherche précisément à ne retirer qu'un et un seul octet placé en toute fin de fichier.
accessoirement, connaîtriez-vous un NG sur lequel on traite de Bash scripting en français ?
Merci pour votre aide.
RS.
sed -e '$s/.$//g' enlevera le dernier caractere different du retour chariot de la derniere ligne
Avec sed je doute qu'on puisse aller plus loin car c'est un outil orienté "lignes de texte"
Pour le dernier octet, tu peux sans doute utiliser :
head -`expr `cat infile | wc -c` - 1`c infile
=?ISO-8859-15?Q?Raphaël_SEBAN?= a écrit
bonsoir,
je cherche depuis des heures sur le net des indices qui m'aideraient à
résoudre un problème à priori simple, mais qui devient incroyablement épineux
dans mon script bash.
Comment faire dans bash pour ne retirer que le dernier octet d'un fichier
binaire quelconque (fichier sans cohérence de données, un fichier non-texte)
sans recourir à des critères conditionnels ?
Je sais déjà que :
sed -e '$d' infile
permet de supprimer en entier la dernière ligne d'un fichier, mais je cherche
précisément à ne retirer qu'un et un seul octet placé en toute fin de
fichier.
accessoirement, connaîtriez-vous un NG sur lequel on traite de Bash scripting
en français ?
Merci pour votre aide.
RS.
sed -e '$s/.$//g'
enlevera le dernier caractere different du retour chariot de la
derniere ligne
Avec sed je doute qu'on puisse aller plus loin car c'est un outil
orienté "lignes de texte"
Pour le dernier octet, tu peux sans doute utiliser :
je cherche depuis des heures sur le net des indices qui m'aideraient à résoudre un problème à priori simple, mais qui devient incroyablement épineux dans mon script bash.
Comment faire dans bash pour ne retirer que le dernier octet d'un fichier binaire quelconque (fichier sans cohérence de données, un fichier non-texte) sans recourir à des critères conditionnels ?
Je sais déjà que :
sed -e '$d' infile
permet de supprimer en entier la dernière ligne d'un fichier, mais je cherche précisément à ne retirer qu'un et un seul octet placé en toute fin de fichier.
accessoirement, connaîtriez-vous un NG sur lequel on traite de Bash scripting en français ?
Merci pour votre aide.
RS.
sed -e '$s/.$//g' enlevera le dernier caractere different du retour chariot de la derniere ligne
Avec sed je doute qu'on puisse aller plus loin car c'est un outil orienté "lignes de texte"
Pour le dernier octet, tu peux sans doute utiliser :
head -`expr `cat infile | wc -c` - 1`c infile
Matthieu Moy
JustMe writes:
Pour le dernier octet, tu peux sans doute utiliser :
head -`expr `cat infile | wc -c` - 1`c infile
head -c -1 foo
devrait faire tout ça.
Pour la robustesse, vérifier quand même ce qu'il se passe quand on a une locale UTF-8 et un caractère non-ascii à la fin du fichier. Mais « head --help » parle de « bytes » et non de « chars » donc ça devrait être bon.
-- Matthieu
JustMe <pasdespam@merci.beaucoup.con> writes:
Pour le dernier octet, tu peux sans doute utiliser :
head -`expr `cat infile | wc -c` - 1`c infile
head -c -1 foo
devrait faire tout ça.
Pour la robustesse, vérifier quand même ce qu'il se passe quand on a
une locale UTF-8 et un caractère non-ascii à la fin du fichier. Mais
« head --help » parle de « bytes » et non de « chars » donc ça devrait
être bon.
Pour le dernier octet, tu peux sans doute utiliser :
head -`expr `cat infile | wc -c` - 1`c infile
head -c -1 foo
devrait faire tout ça.
Pour la robustesse, vérifier quand même ce qu'il se passe quand on a une locale UTF-8 et un caractère non-ascii à la fin du fichier. Mais « head --help » parle de « bytes » et non de « chars » donc ça devrait être bon.