Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Bah, dans l'exemple donné, il s'agit de nombres à 3 décimales max : yaka commencer par tous les multiplier par 1000 et hop !, un pb de moins.
Et peut-être que ça incitera Dorhub à donner le lien (déjà demandé) vers le post où il a trouvé sa solution, celle ayant été postée ici étant incomplète...
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
même pas.ça sent furieusement le type qui a tenté de le faire en bash et qui n'y est pas arrivé
pourtant disedorgue nous a montré comment faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 cmp_dec(){ local yy printf -v yy '10#%.3f%s10#%.3f' $2 - $1 yy=${yy//10#-/-10#} printf -v res %.0f\\n "$((10**9 * (${yy//,/})))e-9" [[ "$res" -eq "0" ]] && echo $res || echo ${res//[0-9]*/1} }Testé très rapidement...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $ cmp_dec 5,215 5,215 0 $ cmp_dec 5,215 -5,215 -1 $ cmp_dec -5,215 5,215 1 $ cmp_dec -5,215 -5,215 0
Cordialement.
ou en plus traditionnel (algo)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 compare_nums() { sep="$3" readarray -d ""${sep:-,}"" -t a <<< "$1" readarray -d ""${sep:-,}"" -t b <<< "$2" [ ${a[0]} -gt ${b[0]} ] && return 1 [ ${a[0]} -lt ${b[0]} ] && return 2 [ ${a[1]} -gt ${b[1]} ] && return 1 [ ${a[1]} -lt ${b[1]} ] && return 2 return 0 }
$moi= ( !== ) ? : ;
Je plussoie, mais faut quelque ajustement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 $ compare_nums 5,215 5,22 $ echo $? 1 $ compare_nums 5,215 5,21 $ echo $? 1 $ compare_nums 5 5,22 bash: [: -gt : opérateur unaire attendu bash: [: -lt : opérateur unaire attendu $ compare_nums 5,215 ,215 bash: [: 5 : opérateur unaire attendu bash: [: 5 : opérateur unaire attendu $ compare_nums 5 5 $ echo $? 1
Cordialement.
Et quelques autres
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ compare_nums 5 5; echo $? 1
[edit]Ah pardon, j'avais pas vu que ce test avait aussi été fait par disedorgue (ascenseur sur son code). Marrant, on a tous les deux pris "5" comme exemple (peut-être j'ai été influencé par ses "5,215" initiaux)
[edit2]ok, j'ai fait les ajustements
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 compare_nums() { sep="${3:-.,}" IFS="$sep" read -a a <<< "$1" IFS="$sep" read -a b <<< "$2" test -z "${a[0]}" && a[0]=0 test ${#a[@]} == 1 && a[1]=0 test -z "${b[0]}" && b[0]=0 test ${#b[@]} == 1 && b[1]=0 #echo "a=[${a[0]}] [${a[1]}]" #echo "b=[${b[0]}] [${b[1]}]" [ ${a[0]} -gt ${b[0]} ] && return 1 [ ${a[0]} -lt ${b[0]} ] && return 2 [ ${a[1]} -gt ${b[1]} ] && return 1 [ ${a[1]} -lt ${b[1]} ] && return 2 return 0 }
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Ou alors, je vais me découvrir des talents de mentaliste
Cordialement.
Cadeau....si on peut dire
(Espérons que je ne me sois pas plantouillé dans les copier/coller)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 cmp_dec(){ local yy printf -v yy '10#%.3f%s10#%.3f' $2 - $1 yy=${yy//10#-/-10#} printf -v res %.0f\\n "$((10**9 * (${yy//,/})))e-9" [[ "$res" -eq "0" ]] && echo $res || echo ${res//[0-9]*/1} } declare -A arr while read a b c do [[ $a && ${arr[$a]+a} ]] && { read x d e <<<${arr[$a]} [[ $(cmp_dec $d $b) -lt 0 ]] && arr[$a]="$a $b $c" true } || { [[ $a ]] && arr[$a]="$a $b $c" ; } done </tmp/xx.txt printf "%s\n" "${arr[@]}"
€dit: j'oubliais , le fichier /tmp/xx.txt c'est le fichier initial mais sans les lignes de commentaire comme par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 $ cat /tmp/xx.txt 1 -30,133 Orange 3 -30,133 Orange 1 -6,576 Banane 1 -6,293 Pomme 1 -12,034 Abricot 1 -7,076 Mûre 2 -4,355 Pomme 2 -6,517 Banane 2 -6,355 Abricot 2 -3,502 Mûre 3 30,133 Trange 3 -40 Rrange
Cordialement.
Comme ça, il n'y a pas le "à priori"
Cordialement.
Le double tri est quand même sublime. Y a pas quelqu'un qui veut le passer en vert, par un pouce levé ?
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
Spécialement pour Jipété: https://forum.ubuntu-fr.org/viewtopic.php?id=2073578
je pense que c'est la source.
Cordialement.
Je ne sais pas si l'adjectif "sublime" peut s'appliquer (ou alors c'est de l'humour mais il manque l'émoticon qui va bien). Parce que trier (là où un grep eût suffit) pour extraire le bon groupe puis retrier le flux initial (donc tout le fichier) là où le grep n'aurait sorti que les lignes utiles (donc moins de lignes à trier)...
Enfin j'ai mis le pouce vert pour l'élégance de l'instruction (et puis parce que c'est demandé gentiment)
Et (pour Jipété) chez-moi le lien a bien fonctionné. Mais on a fait remonter récemment des soucis d'affichage de pages et peut-être que c'est lié...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Ici, le code est complet et semble faire le job...
Mais je veux bien voir le même avec les 2 grep
Cordialement.
Je me suis mal exprimé. J'ai en effet cité deux fois "grep" mais les deux citations référençaient le même (le premier qui sert à extraire le groupe). Donc extraction, puis tri (ok là tri mais tri d'un nombre de lignes réduit) puis extraction premier élement. Style grep "^1 " fic | sort -nk2 | head -n 1.
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Ok, mais là, tu le fais pour un groupe, donc faut que tu boucles pour tous les groupes (que tu ne connais peut-être pas), donc oui, je fais 2 tris mais le second est très réduit puisqu'il ne fait qu'un uniq sur le champs 1.
Cordialement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager