Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

trier une variable tableau avec bash

12 réponses
Avatar
freegate
Bonjour,

Mon script possède un tableau myrep ayant trois valeurs contenant des dates.
La commande ${myrep[*]} affiche
03-06-2011 20-05-2011 27-05-2011.

J'aimerais récupérer dans une autre variable la valeur la plus ancienne
du tableau (en terme de date) soit le 20-05-2011.

Comment puis-je m'y prendre ?

Cordialement.

10 réponses

1 2
Avatar
Benoit Izac
Bonjour,

le 04/06/2011 à 00:43, freegate a écrit dans le
message <4de96378$0$20340$ :

Mon script possède un tableau myrep ayant trois valeurs contenant des dates.
La commande ${myrep[*]} affiche
03-06-2011 20-05-2011 27-05-2011.

J'aimerais récupérer dans une autre variable la valeur la plus
ancienne du tableau (en terme de date) soit le 20-05-2011.

Comment puis-je m'y prendre ?



for date in "${myrep[@]}"; do
echo $date;
done | sort -n -t '-' -k 3 -k 2 -k 1 | head -n 1

--
Benoit Izac
Avatar
Nicolas George
freegate , dans le message <4de96378$0$20340$, a
écrit :
Mon script possède un tableau myrep ayant trois valeurs contenant des dates.
La commande ${myrep[*]} affiche
03-06-2011 20-05-2011 27-05-2011.



Commence par écrire tes dates de manière logique : 2011-03-06 2011-05-20
2011-05-27.
Avatar
Benoit Izac
Dans le message , le 04/06/2011 à 09:20, j'ai
écrit :

Mon script possède un tableau myrep ayant trois valeurs contenant des
dates. La commande ${myrep[*]} affiche
03-06-2011 20-05-2011 27-05-2011.

J'aimerais récupérer dans une autre variable la valeur la plus
ancienne du tableau (en terme de date) soit le 20-05-2011.

Comment puis-je m'y prendre ?



for date in "${myrep[@]}"; do
echo $date;
done | sort -n -t '-' -k 3 -k 2 -k 1 | head -n 1



Un peu plus court (et ça va intéresser François, encore un usage de
$IFS !) :

o=$({ IFS=$'n';echo "${myrep[*]}";}|sort -n -t- -k3 -k2 -k1|head -n1)

--
Benoit Izac
Avatar
Tonton Th
On 06/04/2011 09:20 AM, Benoit Izac wrote:

sort -n -t '-' -k 3 -k 2 -k 1



Joli !

--
Je cherche un nouveau travail...
http://tboudet.free.fr/cv-thierry-boudet.pdf
http://sigfood.dinorama.fr/
Avatar
Erwan David
Tonton Th écrivait :

On 06/04/2011 09:20 AM, Benoit Izac wrote:

sort -n -t '-' -k 3 -k 2 -k 1



Joli !



Mais il y a un piège (qui ici ne piège pas, mais autant faire attention
tout de suite.

Pour trier sur une seule colonne à chaque fois il faut un
sort -k3,3 -k2,2 -k1,1

Et si en plus on n'est pas sûr d'avoir des 0 devant les valeurs qui
s'écrivent en un seul chiffre

sort -k3,3n -k2,2n -k1,1n




--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Avatar
moi-meme
Le Sat, 04 Jun 2011 10:16:13 +0200, Benoit Izac a écrit :

Un peu plus court (et ça va intéresser François, encore un usage de $IFS
!) :

o=$({ IFS=$'n';echo "${myrep[*]}";}|sort -n -t- -k3 -k2 -k1|head -n1)



chapeau : combien d'années de pratique ?
Avatar
Benoit Izac
Bonjour,

le 04/06/2011 à 20:55, moi-meme a écrit dans le message
<4dea7fb5$0$20836$ :

o=$({ IFS=$'n';echo "${myrep[*]}";}|sort -n -t- -k3 -k2 -k1|head -n1)



chapeau : combien d'années de pratique ?



J'ai découvert Linux en 1998 et ça doit faire à peine moins d'une
dizaine d'années que je n'utilise plus que ça (et des BSD) pour mes
machines personnelles. Je précise tout de même que c'est un hobby, je ne
travaille pas dans le secteur informatique.

D'un autre coté, j'utilise Windows depuis une vingtaine d'année
(essentiellement pour mon travail maintenant) et je suis tout bonnement
incapable de résoudre ce type de problème avec cet OS sans installer un
cygwin, Perl ou un compilateur C.

--
Benoit Izac
Avatar
xavier
Benoit Izac wrote:

D'un autre coté, j'utilise Windows depuis une vingtaine d'année
(essentiellement pour mon travail maintenant) et je suis tout bonnement
incapable de résoudre ce type de problème avec cet OS sans installer un
cygwin, Perl ou un compilateur C.



Il y a quand même un progrès avec PowerShell.

Mais comme je ne maîtrise pas, je continue à installer StrawberryPerl
sur mes serveurs Windows :-)

--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
(Jethro Tull)
Avatar
Sergio
Le 05/06/2011 11:42, Xavier a écrit :
Benoit Izac wrote:

D'un autre coté, j'utilise Windows depuis une vingtaine d'année
(essentiellement pour mon travail maintenant) et je suis tout bonnement
incapable de résoudre ce type de problème avec cet OS sans installer un
cygwin, Perl ou un compilateur C.



Il y a quand même un progrès avec PowerShell.



Pas trop étudié le truc, mais il a un gros défaut : Il n'est pas évident de passer d'une suite de commandes à un script. Alors, que
ce soit avec les .BAT ou les shell Unix, la transition est facile : il suffit de mettre les commandes bout à bout, et la curiosité
aidant, en lisant un peu la doc, on arrive à faire des trucs puissants.

Pas le cas de Powershell : faut tout reprendre à zéro.

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Avatar
Freegate
Le 04/06/2011 04:11, Nicolas George a écrit :
freegate , dans le message<4de96378$0$20340$, a
écrit :
Mon script possède un tableau myrep ayant trois valeurs contenant des dates.
La commande ${myrep[*]} affiche
03-06-2011 20-05-2011 27-05-2011.



Commence par écrire tes dates de manière logique : 2011-03-06 2011-05-20
2011-05-27.




C'était la solution de dernier recours au cas où il n'y avait pas
d'autres solutions, puisque ces dates sont en fait des répertoires de
sauvegarde et un ls ou un ls -R m'aurait permis d'avoir un tri
parfaitement conforme.

Mais je voulais pour faciliter la restauration auprès de mes
utilisateurs, avoir des répertoires de sauvegarde parfaitement lisibles
dans le système français.
1 2