Ich habe zwei gleiche Skripte. In einem benutze ich Katze und in anderen ist alles AWK.Lesen Sie Dateien mit CAT oder AWK für bessere Ausführungszeit
Hier ist der erste:
#!/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
Hier ist das zweite:
#!/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
Die Zeit für das erste Skript genommen ist wie folgt (Skript mit CAT-Anweisungen):
real 0m0.215s
user 0m0.023s
sys 0m0.238s
Für das zweite Skript, das nur AWK-Anweisungen hat, ist die Zeit wie folgt:
real 0m0.132s
user 0m0.013s
sys 0m0.123s
Ich denke, awk Verarbeitung von Datei ist viel schneller im Vergleich zu anderen externen Funktion aufrufen, um die Dateien zu lesen. Ich würde mich für eine Diskussion über die Ergebnisse freuen.
Ich denke, AWK führt in einigen Fällen besser.
Dies ist in Bezug auf diese Frage hier:
Sind Sie sich dessen bewusst: http://porkmail.org/era/unix/award.html? – cdarke