#1 Le 01/03/2019, à 19:14
- ar barzh paour
[Résolu] tri alphabétique en bash
bonsoir à tous
je me suis écrit une fonction qui ne me satisfait pas trop
j'utilise des fichiers intermédiaires tmp avec sort et uniq
auriez-vous une meilleure solution (en bash) ?
remarque les xi sont des chaines quelconque pouvant comporter des espaces
function tri_chaine { # recoit $1 x1;x2;x3;.....xn
# renvoie une chaine y1;y2;y3....yn
# ce sont les xi mais tous différents et triés alphabétiquement
# on doit pouvoir faire plus simple !!!! ?
# écrire chaque terme de $1 dans tmp2.txt
tmp2=/tmp/tmp2.txt
rm ${tmp2} 2>/dev/null
( IFS=";" list=($1) ; \
for i in ${!list[@]} ; \
do echo ${list[$i]} >> ${tmp2} ; \
done \
)
# tri et suppression des doublons ,résultat dans tmp1.txt
tmp1=/tmp/tmp1.txt
sort ${tmp2} | uniq > ${tmp1}
# reconstruire la chaine en lisant le fichier tmp1.txt
chaine=""
while read ligne
do
chaine="${chaine}${ligne};"
done < ${tmp1}
# envoyer le résultat
echo "$chaine"
}
Dernière modification par ar barzh paour (Le 02/03/2019, à 20:00)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( 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 01/03/2019, à 20:27
- pingouinux
Re : [Résolu] tri alphabétique en bash
Bonsoir,
autre_fonction(){ tr ';' '\n' <<<"$1" | sort -u | tr '\n' ';'; echo; }
Hors ligne
#3 Le 02/03/2019, à 19:59
- ar barzh paour
Re : [Résolu] tri alphabétique en bash
et tout ça en une seule ligne !!!
il faut que je retienne 2 trucs
1- tranfomer les ; en \n ce qui permet d'utiliser sort
2- l' option -u de sort
merci piongouinux
Dernière modification par ar barzh paour (Le 02/03/2019, à 20:03)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( 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
#4 Le 02/03/2019, à 20:14
- Watael
Re : [Résolu] tri alphabétique en bash
\n ou \0 (NULL)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 02/03/2019, à 20:43
- FrancisFDZ
Re : [Résolu] tri alphabétique en bash
Bonjour,
[HS]
Bonsoir,
autre_fonction(){ tr ';' '\n' <<<"$1" | sort -u | tr '\n' ';'; echo; }
Ça me rappelle une rubrique de "Hebdogiciel" où il était demandé au lecteur de créer une commande compliquée en une seule ligne
(nostalgie, quand tu nous tient ! )
[/HS]
-- On peut avoir des raisons de se plaindre et n'avoir pas raison de se plaindre --
[Victor Hugo]
Hors ligne