#1 Le 26/11/2012, à 11:31
- ar barzh paour
[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)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#2 Le 26/11/2012, à 11:59
- ar barzh paour
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
fi
mais augmentation du temps de calcul .....
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#3 Le 26/11/2012, à 12:08
- Watael
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ñv
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#4 Le 26/11/2012, à 17:46
- nesthib
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 Bordeaux : Giroll – Services libres : TdCT.org
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ᴉsdn
Hors ligne
#5 Le 26/11/2012, à 20:37
- ar barzh paour
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
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#6 Le 26/11/2012, à 21:08
- pingouinux
Re : [Résolu] renvoi inattendu par "cut"
Bonsoir,
Ceci devrait être équivalent :
if grep -q "^$2" <<<"$1"
then
return 0
else
return 1
fi
Hors ligne
#7 Le 26/11/2012, à 21:19
- ar barzh paour
Re : [Résolu] renvoi inattendu par "cut"
bonsoir pingouinux
oui ça marche aussi
que veulent dire les "<<<" ? je connaissais "<" et "<<" mais pas "<<<"
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#8 Le 26/11/2012, à 21:25
- pingouinux
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
- BrunoGey
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
Le PC Samsung R720, Systeme : Ubuntu 16.04.1 noyau 4.4.0-145-generic #171
Session graphique : Standard Unity. Formattez vos posts avec les balises BBcode
Rigolo ;-) Pebkac2.fr
Hors ligne
#10 Le 27/11/2012, à 01:04
- Watael
Re : [Résolu] renvoi inattendu par "cut"
en effet.
${#2} est le nombre de caractères contenu dans le deuxième paramètre postitionnel.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#11 Le 27/11/2012, à 03:27
- nesthib
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 Bordeaux : Giroll – Services libres : TdCT.org
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ᴉsdn
Hors ligne
#12 Le 27/11/2012, à 11:15
- ar barzh paour
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 g
le 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)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#13 Le 27/11/2012, à 15:30
- elendil
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
- ar barzh paour
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)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#15 Le 29/11/2012, à 09:40
- ar barzh paour
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)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#16 Le 12/01/2013, à 16:29
- ar barzh paour
Re : [Résolu] renvoi inattendu par "cut"
ah bien je trouve aussi ceci
echo `echo "ñ"|wc -c`
3
si on tient compte d'un éventuel saut de ligne je devrait obtenir 2 et non 3
je confirme par
echo `echo "ññññ"|wc -c`
9
wc compte bien 2 caractères pour le ñ !!!! et non 1
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#17 Le 12/01/2013, à 17:36
- pingouinux
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 <<<"ééé"
4
Hors ligne
#18 Le 12/01/2013, à 17:52
- nesthib
Re : [Résolu] renvoi inattendu par "cut"
+1
petite question, pourquoi faire un :
echo `echo…`
c'est inutile, non ?
GUL Bordeaux : Giroll – Services libres : TdCT.org
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ᴉsdn
Hors ligne
#19 Le 12/01/2013, à 18:10
- ar barzh paour
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
5
Dernière modification par ar barzh paour (Le 12/01/2013, à 18:14)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne