Citation
torgnol
Comme vous pouvez le lire dans mon message
d'origine, les lignes mon fichier ont une mise en
forme bien particulière avec des espaces.
Or le fait de le charger dans un buffer, casse
complètement cette mise en forme, un bref apperçu
du fichier pour une ligne donne ceci:
XXXXXXXXXXXXXXXX XXXX XX X XXXXXXXXXXXX XXXX
XXXXXXXXXXXX
Tchuss
Tu fais erreur. Si ton fichier ne contient que des caractères imprimables (fichier texte), alors le fait de le charger dans un buffer et de le relire avec "read" ne change rien à son format. Les espaces restent là où ils sont. Tu peux essayer en lisant "/etc/hosts" ou autre fichier texte.
Un fichier texte n'est qu'une suite d'octets imprimables mis les uns à la suite des autres avec, de temps en temps, un retour chariot (ctrl-m). Lorsque tu ouvres avec un éditeur comme "vi", il analyse et remplace ce ctrl-m par un saut de ligne à l'écran d'où l'affichage bien rangé ligne par ligne. Mais cette notion de ligne n'est que visuelle.
La commande "read" lit un bloc d'octets et s'arrête au ctrl-m donc ta variable contiendra une ligne. Mais elle ne transforme pas cette ligne
Maintenant, si ton fichier ne contient pas que du texte (mp3, vidéo, etc), alors c'est plus grave car il peut contenir des caractères de code ascii 13 (ctrl-m) qui ne sont pas là pour signifier la fin de ligne mais que "read" interprète de cette manière parce qu'il croit que tu lui fais bouffer du texte et que, dans du texte, le ctrl-m signifie "fin de ligne"
=> d'où le pb que tu as eu avec "egrep" qui analyse aussi des fichiers textes et la demande de Brugman qui te demande un "file" pour connaître le type de fichier que tu utilises...
Pour savoir si ton fichier est du texte, tu peux faire un "strings fichier_entree >fichier_sortie" et faire ensuite un "cmp fichier_entree fichier_sortie"
La commande "strings" extrait les octets imprimables d'un fichier. Si ton fichier est du texte le fichier sortie sera identique et "cmp" ne verra pas de différence sinon...
Poste le Thursday 16 June 2005 08:49:47