#1 Le 26/11/2012, à 11:31
[Résolu] renvoi inattendu par "cut"
bonjour à tous
voilà un résultat que je n'attendais pas
xxx@-desktop:~$ echo "tañva"|cut -c1-4
tañje m'attendais à obtenir "tañv" bien sur et
je me demandais pourquoi mon programme ne fonctionnait pas
en fait le code exact de mon programme est celui-ci :
res=`echo "$1"|cut -c1-${#2}`auriez-vous une solution ?
Dernière modification par ar barzh paour (Le 29/11/2012, à 10:06)
Ubuntu 12.04
Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz
Hors ligne
#2 Le 26/11/2012, à 11:59
Re : [Résolu] renvoi inattendu par "cut"
en attendant une meilleure solution voilà ce que j'ai fait
motplus=$2"x" # augmentation artificielle de la longueur du mot recherché
res=`echo "$1"|cut -c1-${#2}`
resplus=`echo "$1"|cut -c1-${#motplus}`
if [[ $res = $2 || $resplus = $2 ]]
then
return 0
else
return 1
fimais augmentation du temps de calcul .....
Ubuntu 12.04
Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz
Hors ligne
#3 Le 26/11/2012, à 12:08
Re : [Résolu] renvoi inattendu par "cut"
salut,
si tu es sur du bash, tu peux exploiter le Développement des sous-chaînes
$ var="tañva"
$ echo "${var:0:4}" #le zéro est facultatif
tañveval, c'est mal.
En ligne
#4 Le 26/11/2012, à 17:46
Re : [Résolu] renvoi inattendu par "cut"
@ar barzh paour : c'est un bug connu de cut avec l'utf-8. Ton caractère « ñ » est codé sur 2 octets en utf-8. Peut être que tu peux relancer le rapport de bug ?
GUL les mardis à Bordeaux : Giroll
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdnGMT-4
Hors ligne
#5 Le 26/11/2012, à 20:37
Re : [Résolu] renvoi inattendu par "cut"
@watael : oui je suis en bash j'ai modifié mon code ainsi :
function deb_mot_OK {
#recoit
# $1=ligne dans laquelle rechercher le mot
# $2=début du mot à chercher
# code de retour
#0 si début de la ligne est égal au mot à chercher
#1 sinon
res=`echo "${1:0:${#2}}"`
if [[ $res = $2 ]]
then
return 0
else
return 1
fi
}ça à l'air de tourner impec !
où puis-je trouver cette documentation qui explique cette syntaxe ?
@nethib
oui ñ=C3 B1
je vais me renseigner pour savoir comment relancer un bug, car je ne sais pas faire
Ubuntu 12.04
Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz
Hors ligne
#6 Le 26/11/2012, à 21:08
Re : [Résolu] renvoi inattendu par "cut"
Bonsoir,
Ceci devrait être équivalent :
if grep -q "^$2" <<<"$1"
then
return 0
else
return 1
fiHors ligne
#7 Le 26/11/2012, à 21:19
Re : [Résolu] renvoi inattendu par "cut"
bonsoir pingouinux
oui ça marche aussi
que veulent dire les "<<<" ? je connaissais "<" et "<<" mais pas "<<<"
Ubuntu 12.04
Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz
Hors ligne
#8 Le 26/11/2012, à 21:25
Re : [Résolu] renvoi inattendu par "cut"
que veulent dire les "<<<" ?
Le texte à droite de <<< est transmis à la commande en tant que "standard input".
Extrait de man bash
Here Strings
A variant of here documents, the format is:<<<word
The word is expanded and supplied to the command on its standard input.
Hors ligne
#9 Le 26/11/2012, à 21:53
Re : [Résolu] renvoi inattendu par "cut"
bonjour à tous
voilà un résultat que je n'attendais pasxxx@-desktop:~$ echo "tañva"|cut -c1-4 tañje m'attendais à obtenir "tañv" bien sur et
je me demandais pourquoi mon programme ne fonctionnait pas
en fait le code exact de mon programme est celui-ci :res=`echo "$1"|cut -c1-${#2}`auriez-vous une solution ?
Bonsoir,
j'espère ne pas dire une connerie, sinon rectifiez svp.
voilà :
mon sentiment est que tañva"|cut -c1-4, compte 4 lettres depuis le dbut du mot pour donner tañv
alors que echo "$1"|cut -c1-${#2}, le #2 entre crochets, compte 2 lettres depuis la fin du mot, pour donner tañ
ta syntaxe ${#num}, est différente de -num
d'accord ?
cdt
bruno
12.04 LTS 3.2.0-43.68 https://help.ubuntu.com/12.04/ubuntu-help/index.html
sur celui là : http://www.01net.com/fiche-produit/avis … xe6v-7350/
Hors ligne
#10 Le 27/11/2012, à 01:04
Re : [Résolu] renvoi inattendu par "cut"
en effet.
${#2} est le nombre de caractères contenu dans le deuxième paramètre postitionnel.
eval, c'est mal.
En ligne
#11 Le 27/11/2012, à 03:27
Re : [Résolu] renvoi inattendu par "cut"
@ar barzh paour : pour relancer le bug il suffit de suivre mon précédent lien et de poster un commentaire comme quoi tu es aussi affecté. Pour la syntaxe ${parameter:offset:length}, tu trouveras tous les détails dans le man de bash à la section Parameter Expansion.
GUL les mardis à Bordeaux : Giroll
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdnGMT-4
Hors ligne
#12 Le 27/11/2012, à 11:15
Re : [Résolu] renvoi inattendu par "cut"
@nethib et pingouinux , je ne pense jamais aux solutions les plus simples !
man bash !!!!!! c'est si simple j'y vais
et merci pour l'explication des "<<<"
echo "$1"|cut -c1-${#2}, le #2 entre crochets, compte 2 lettres depuis la fin du mot, pour donner tañ
non dans mon post 5 je développe un peu plus
1 est le premier paramètre reçu par la fonction
2 est le deuxième paramètre reçu par la fonction
en bash {#2} donne la longueur du paramètre N°2
si la fontion deb_mot_OK recoit comme deuxième paramètre tañv
{#2} a comme valeur 4
exemple
#!/bin/bash
function deb_mot_OK {
echo "longueur :" ${#1} "(paramètre 1 =$1)"
echo "longueur :" ${#2} "(paramètre 2 =$2)"
}
deb_mot_OK "123456789" "tañv"
read gle résultat donne
longueur : 9 (paramètre 1 =123456789)
longueur : 4 (paramètre 2 =tañv)il faut remarquer que ${#2} avec 2=tañv donne bien 4
Dernière modification par ar barzh paour (Le 27/11/2012, à 11:17)
Ubuntu 12.04
Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz
Hors ligne
#13 Le 27/11/2012, à 15:30
Re : [Résolu] renvoi inattendu par "cut"
Salut,
Juste pour compléter cette page : http://abs.traduc.org/abs-5.0-fr/ch09s02.html m'a souvent beaucoup aidée...
Elendil
Hors ligne
#14 Le 27/11/2012, à 16:12
Re : [Résolu] renvoi inattendu par "cut"
@elendil
super ! merci pour le lien
pour info j'y ai même trouvé une version plus récente le meme en 6.4.05
Dernière modification par ar barzh paour (Le 27/11/2012, à 16:37)
Ubuntu 12.04
Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz
Hors ligne
#15 Le 29/11/2012, à 09:40
Re : [Résolu] renvoi inattendu par "cut"
je mets résolu
en effet "cut" est buggé (post #4 de nethib)
et on m'a donné un paliatif (post #3 Watael) (post #6 pingouinux)
et plein d'explications ....
@nesthib
j'ai essayé de relancer le bug en ajoutant un commentaire sur launchpad(2012-11-29)
à+
Dernière modification par ar barzh paour (Le 29/11/2012, à 10:05)
Ubuntu 12.04
Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz
Hors ligne
#16 Le 12/01/2013, à 16:29
Re : [Résolu] renvoi inattendu par "cut"
ah bien je trouve aussi ceci
echo `echo "ñ"|wc -c`
3si on tient compte d'un éventuel saut de ligne je devrait obtenir 2 et non 3
je confirme par
echo `echo "ññññ"|wc -c`
9wc compte bien 2 caractères pour le ñ !!!! et non 1
Ubuntu 12.04
Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz
Hors ligne
#17 Le 12/01/2013, à 17:36
Re : [Résolu] renvoi inattendu par "cut"
Bonjour ar barzh paour,
C'est normal, il faut utiliser -m au lieu de -c. Voici un extrait de man wc :
-c, --bytes
print the byte counts-m, --chars
print the character counts
$ wc -c <<<"ééé"
7
$ wc -m <<<"ééé"
4Hors ligne
#18 Le 12/01/2013, à 17:52
Re : [Résolu] renvoi inattendu par "cut"
+1
petite question, pourquoi faire un :
echo `echo…`c'est inutile, non ?
GUL les mardis à Bordeaux : Giroll
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdnGMT-4
Hors ligne
#19 Le 12/01/2013, à 18:10
Re : [Résolu] renvoi inattendu par "cut"
bonne année à tous !! bien noté
@pingouinux
oui je lis la doc trop en biais ... et je ne la connais plus suffisamment ,
il y a quelques années on disait -c = caractères ... ![]()
-c compte le nombre d'octets
-m compte le nombre de caractères
@nesthib
oui j'étais parti sur autre chose un seul suffit
echo "ññññ"|wc -m
5Dernière modification par ar barzh paour (Le 12/01/2013, à 18:14)
Ubuntu 12.04
Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz
Hors ligne
Pages : 1
- Accueil
- » Forum
- » Terminal, scripts et ligne de commande
- » [Résolu] renvoi inattendu par "cut"