Voici la ligne perl donné par [ADN] :
# perl -laF: -ne 'print "$F[0]" if ($F[2]>=1000)' /etc/passwd
Avec les performances (donné par la commande time) :
real 0m0.031s user 0m0.012s sys 0m0.006s
Je propose ensuite la commande suivante :
# awk -F: '1000 <= $3 { print $1 }' /etc/passwd
Plus simple à écrire (tout du moins je trouve), elle est aussi bien plus performante :
real 0m0.005s user 0m0.003s sys 0m0.002s
Enfin, pour le fun, je me suis amusé à utiliser sed. Voilà ce que ca donne (il y a peu être plus simple) :
# sed -n -e 's@\([^:]*\):\([^:]*\):\([[:digit:]]\{4\}\).*:\([^:]*\):\([^:]*\):\([^:]*\):\([^:]*\).*@\1@p' /etc/passwd
Par contre ... niveau performance ... :
real 0m0.039s user 0m0.013s sys 0m0.004s
1 De ciel -
Salut :)
Laisse-moi deviner, tu as lancé l'uniligne perl avant l'uniligne awk ?
De mon côté, chronologiquement :
1)
# time awk -F: '1000 <= $3 { print $1 }' /etc/passwd 1> /dev/null
real 0m0.027s
user 0m0.000s
sys 0m0.010s
2)
# time perl -laF: -ne 'print "$F[0]" if ($F[2]>=1000)' /etc/passwd 1> /dev/null
real 0m0.005s
user 0m0.010s
sys 0m0.000s
.... Si je poursuis
3)
# time perl -laF: -ne 'print "$F[0]" if ($F[2]>=1000)' /etc/passwd 1>/dev/null
real 0m0.004s
user 0m0.000s
sys 0m0.000s
4)
# time awk -F: '1000 <= $3 { print $1 }' /etc/passwd 1> /dev/null
real 0m0.002s
user 0m0.000s
sys 0m0.000s
Attention donc à l'interpretation de la sortie de time
A+
2 De GnunuX -
Effectivement, on trouve des valeurs différentes. A vrai dire j'ai lancé plusieurs fois chaque commande et j'ai pris la valeur moyenne (approximation non scientifique).
Mais bon, c'était plus pour la simplicité d'écriture que j'ai conseillé awk.