J'ai deux mêmes scripts. Dans un, j'utilise le chat et dans l'autre c'est tout AWK.Lire des fichiers en utilisant CAT ou AWK pour une meilleure exécution
Voici le premier:
#!/bin/bash
lines=$(cat /etc/passwd | wc -l)
for ((i=1 ; i <=$lines ; i++))
do
user=$(cat /etc/passwd | awk -F : -vi=$i 'NR==i {print $1}')
uid=$(cat /etc/passwd | awk -F : -vi=$i 'NR==i {print $3}')
gid=$(cat /etc/passwd | awk -F : -vi=$i 'NR==i {print $4}')
shell=$(cat /etc/passwd | awk -F : -vi=$i 'NR==i {print $7}')
echo -e "User is : $user \t Uid is : $uid \t Gid is : $gid \t Shell is : $shell"
done
Voici le second:
#!/bin/bash
lines=$(awk 'END {print NR}' /etc/passwd)
for ((i=1 ; i <=$lines ; i++))
do
user=$(awk -F : -vi=$i 'NR==i {print $1}' /etc/passwd)
uid=$(awk -F : -vi=$i 'NR==i {print $3}' /etc/passwd)
gid=$(awk -F : -vi=$i 'NR==i {print $4}' /etc/passwd)
shell=$(awk -F : -vi=$i 'NR==i {print $7}' /etc/passwd)
echo -e "User is : $user \t Uid is : $uid \t Gid is : $gid \t Shell is : $shell"
done
Le temps pris pour le premier script est le suivant (script avec des instructions CAT):
real 0m0.215s
user 0m0.023s
sys 0m0.238s
Pour le deuxième script qui n'a que des instructions AWK, le temps pris est le suivant:
real 0m0.132s
user 0m0.013s
sys 0m0.123s
Je pense que le traitement de fichier awk est beaucoup plus rapide par rapport à l'appel d'une autre fonction externe pour lire les fichiers. Je serais heureux d'avoir une discussion sur les résultats.
Je pense que AWK fonctionne mieux dans certains cas.
Ceci est au sujet de cette question ici:
Etes-vous conscient de cela: http://porkmail.org/era/unix/award.html? – cdarke