Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Valeurs ASCII d'un caractère
Envoyé par: samgratt

Bonjour,

Je cherche à connaitre la valeur ASCII(HEXA) du 29è caractère d'un fichier.
En effet, si elle vaut '02' ou '03' je ne dois pas faire la même chose.
voici ou j'en suis:
sChar=`head -1 myfile |cut -c29-29`

Pouvez vous m'éclairer???
Merci!

Poste le Wednesday 16 September 2009 09:58:30
Répondre     Citer    
Re: Valeurs ASCII d'un caractère
Envoyé par: nicola

Au pire, tu le transformes en son nom, du genre eacute pour é, que tu testes.
En C, c’est simplissime à faire, mais en shell…
Une autre idée, tu peux stocker tes deux caractères (eux-mêmes, pas 02 ou 03) dans des variables et tu testes l’égalité de chaîne de caractères.

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-

Poste le Wednesday 16 September 2009 15:05:05
Répondre     Citer    
Re: Valeurs ASCII d'un caractère
Envoyé par: samgratt

C'est obligatoirement en shell
j'ai trouvé une bidouille mais j'aime pas les bidouilles car si je me retrouve avec une autre valeur que 02 et 03 , ca va être pas génial (j'ai deja trouvé 2 fichiers avec un 0...)

toto=`cat $myfile |tr '\000' "." |tr '\n' "." |cut -c30-30 |tr '\002' 2 |tr '\003' 3`

Poste le Wednesday 16 September 2009 16:16:29
Répondre     Citer    
Re: Valeurs ASCII d'un caractère
Envoyé par: gil390

bonjour,

personnellement je chercherais du côté de awk qui reste "shell" (enfin, autant que cut, tr,...) et qui est puissant pour faire des traitements divers et variés de manière programmatique.

Gil

Poste le Friday 18 September 2009 12:48:26
Répondre     Citer    
Re: Valeurs ASCII d'un caractère
Envoyé par: NBaH

Bonjour sam

Ce serait bien si tu pouvais nous donner un exemple de fichier que tu souhaites modifier (quelques lignes contenant les différents cas pour lesquels tu veux opérer une modification, et quelques lignes qui ne devront pas être modifiées), ainsi que le résultat attendu...

Poste le Saturday 19 September 2009 13:10:40
Répondre     Citer    
Re: Valeurs ASCII d'un caractère
Envoyé par: NBaH

#!/bin/bash

#set -x

Traitement() {
while read -r line
 do
   if [ ${line:29:4} = '\000' ]
    then
      echo "${line/\\000/.}"
   elif [ ${line:29:4} = '\002' -o ${line:29:4} = '\003' ]
    then
       echo "${line/\\00/}"
   elif [ ${line:29:2} = '\n' ]
    then
      echo "${line/\\n/.}"
   else
      echo "$line"
   fi
done < $1 > ${1%.*}.corr
}

if [ -z $1 ]; then
   echo "Il faut indiquer le chemin et le nom d'un fichier à traiter"
 else
   Traitement $1
fi
cat fichier.in
1-abcdefghijklmnopqrstuvwxyza\000defghi
2-abcdefghijklmnopqrstuvwxyza\002defghi
3-abcdefghijklmnopqrstuvwxyza\003defghi
4-abcdefghijklmnopqrstuvwxyza\ndefghi
5-abcdefghijklmnopqrstuvwxyza\002defghi
6-abcdefghijklmnopqrstuvwxyza\004defghi
7-abcdefghijklmnopqrstuvwxyza\005defghi

./script.sh fichier.in

cat fichier.corr
1-abcdefghijklmnopqrstuvwxyza.defghi
2-abcdefghijklmnopqrstuvwxyza2defghi
3-abcdefghijklmnopqrstuvwxyza3defghi
4-abcdefghijklmnopqrstuvwxyza.defghi
5-abcdefghijklmnopqrstuvwxyza2defghi
6-abcdefghijklmnopqrstuvwxyza\004defghi
7-abcdefghijklmnopqrstuvwxyza\005defghi
Ça peut être améliorer...il faut voir avec la "configuration" de tes fichiers...

Poste le Saturday 19 September 2009 14:11:52
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Valeurs ASCII d'un caractère
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons